その他
    ホーム 技術発信 DoRuby rubyでのhttpリクエスト

    rubyでのhttpリクエスト

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    Rubyのnet/httpライブラリとuriライブラリを用いてヘッダーカスタマイズ、読み込み時間制限を設定できるhttpリクエスト関数を作成してみたいと思います。

    今回作成するもの

    rubyでヘッダーカスタマイズ、読み込み時間制限を設定できるhttpリクエスト関数を作成する

    今回使用するrubyライブラリ一覧

    uri は rubyでURI を表す文字列から URI オブジェクトを生成することができるライブラリ

     net/httpはrubyでHTTP リクエストすることができるライブラリ

    rubyライブラリuriの使用例

    irb(main):001:0> require ‘uri’

    => true

    irb(main):006:0> uri = URI.parse(‘http://doruby.kbmj.com/ruby_on_rails/’)

    => #<uri::http:0xb7f655b0 url:http://doruby.kbmj.com/ruby_on_rails/>

    irb(main):007:0> uri.host

    => “doruby.kbmj.com”

    irb(main):008:0> uri.path

    => “/ruby_on_rails/”

    irb(main):009:0> uri.port

    => 80

    作成したrubyのヘッダーカスタマイズ、読み込み時間制限を設定できるhttpリクエスト関数

    require ‘uri’

    require ‘net/http’

    module Net

     class HTTP

      def HTTP.get_with_options(uri,open_timeout=nil,read_timeout=nil,headers=nil,options=nil)

       uri = URI.parse(uri) if uri.respond_to? :to_str

       begin

        start(uri.host,uri.port) do |http|

         http.open_timeout= open_timeout if open_timeout

         http.read_timeout= read_timeout if read_timeout

         path_query = uri.path + (uri.query ? ( ‘?’ + uri.query) : ”)

         res = http.get(uri.path,headers)

         return res

        end

       rescue Exception => e

        puts e

        return false

       end

      end

     end

    end

    作成関数使用例

    http://doruby.kbmj.com/yy_on_railsに5秒で読み込みが完了しなければERRORにしたいとき

    res = Net::HTTP.get_with_options(‘http://doruby.kbmj.com/yy_on_rails’,nil,5,{‘Accept-Language’ => ‘jp’})