我正在开发一个使用 HTTParty 发出 HTTP 请求的 Rails 应用程序。如何使用 HTTParty 处理 HTTP 错误?具体来说,我需要捕获 HTTP 502 和 503 以及其他错误,例如连接被拒绝和超时错误。
问问题
44714 次
3 回答
98
HTTParty::Response的实例有一个code
包含 HTTP 响应状态代码的属性。它以整数形式给出。所以,像这样:
response = HTTParty.get('http://twitter.com/statuses/public_timeline.json')
case response.code
when 200
puts "All good!"
when 404
puts "O noes not found!"
when 500...600
puts "ZOMG ERROR #{response.code}"
end
于 2011-10-26T22:46:29.587 回答
47
此答案解决了连接故障。如果未找到 URL,则状态代码将无济于事。像这样拯救它:
begin
HTTParty.get('http://google.com')
rescue HTTParty::Error
# don´t do anything / whatever
rescue StandardError
# rescue instances of StandardError,
# i.e. Timeout::Error, SocketError etc
end
有关更多信息,请参阅:此 github 问题
于 2014-11-05T22:08:25.160 回答
21
你也可以使用这样方便的谓词方法,如success?
或bad_gateway?
以这种方式:
response = HTTParty.post(uri, options)
p response.success?
可能的响应的完整列表可以在Rack::Utils::SYMBOL_TO_STATUS_CODE
常量下找到。
于 2016-06-22T03:17:01.690 回答