如何使用Ruby HTTP :: Net处理404错误?

时间:2010-05-09 11:07:45

标签: ruby http

我正在尝试解析网页,但有时会出现404错误。这是我用来获取网页的代码:

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

如何测试result是否为404错误代码?

3 个答案:

答案 0 :(得分:10)

重写你的代码:

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

这将打印身体后面的状态代码。

答案 1 :(得分:1)

如您所知,无论是否存在错误,您的代码都将始终返回响应正文。为了测试响应代码,请使用Theo的答案和以下if语句,例如:

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

此示例将代码(字符串)转换为整数,并将重定向和各种200代码视为成功。

有关返回的各种代码,请参阅此处: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

答案 2 :(得分:0)

您需要获得答复:

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