开发者

How to handle 404 errors with Ruby HTTP::Net?

I'm trying to parse web pages but I sometimes get 4开发者_Go百科04 errors. Here's the code I use to get the web page:

result = Net::HTTP::get URI.parse(URI.escape(url))

How do I test if result is a 404 error code?


Rewrite your code like this:

uri = URI.parse(url)
result = Net::HTTP.start(uri.host, uri.port) { |http| http.get(uri.path) }
puts result.code
puts result.body

That will print the status code followed by the body.


As you know, your code will always return the response body, whether there is an error or not. In order to test the response code, use Theo's answer, and the following if statement, for example:

if result.code.to_i < 400
  puts "success"
end

This example converts the code (which is a string) to an integer, and treats redirects and various 200 codes as successful.

See this for the various codes returned: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes


You need to get the response:

response = Net::HTTP.get_response(URI(url))
error = response.is_a?(Net::HTTPNotFound)
result = response.body
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜