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

如何使用Ruby HTTP::Net处理404错误?,ruby,http,Ruby,Http,我试图解析网页,但有时会出现404个错误。下面是我用来获取网页的代码: result = Net::HTTP::get URI.parse(URI.escape(url)) 如何测试结果是否为404错误代码?如下重写代码: uri = URI.parse(url) result = Net::HTTP.start(uri.host, uri.port) { |http| http.get(uri.path) } puts result.code puts result.body 这将打印状态

我试图解析网页,但有时会出现404个错误。下面是我用来获取网页的代码:

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

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

如下重写代码:

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

这将打印状态代码,后跟正文。

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

if result.code.to_i < 400
  puts "success"
end
如果result.code.to_i<400
“成功”
结束
本例将代码(字符串)转换为整数,并将重定向和各种200代码视为成功

有关返回的各种代码,请参见:
您需要得到响应:

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

谢谢我试过了,但结果是“状态”不起作用。相反,我选中了result.class.name==“HTTPOK”,它的作用是:-)对不起,它应该是
result.code
,而不是
result.status
。我已经更新了我的答案。注意:URI在模块
net/http