[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","/")