この記事はアピリッツの技術ブログ「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’})