[Ruby] RubyでURI
何も考えずにダウンロードする場合は,open-uriを使う.
require 'open-uri' def get_open_uri begin f = open( 'http://www.yahoo.co.jp' ) rescue puts "Error" else puts f.read f.close end end
しかし,この場合,タイムアウトとかの場合は考慮されない.
考慮する場合は,Net:HTTP,timeoutを使う.
require 'net/http'
require 'timeout'
require 'uri'
TimeoutCount = 10
def get(host, path, port = 80)
begin
timeout( TimeoutCount ) {
begin
Net::HTTP.start( host, port ) { |http|
response , = http.get( '/index.html' )
return response.body
}
rescue Net::ProtoRetriableError => e
puts "Retry"
retry
end
}
rescue TimeoutError => e
puts "TimeoutError"
rescue
puts "Exception"
end
end
puts get("www.yahoo.co.jp","/")