如何使用 HTTParty 处理错误?

发布于 2024-12-12 03:38:32 字数 122 浏览 2 评论 0原文

我正在开发一个使用 HTTParty 发出 HTTP 请求的 Rails 应用程序。如何使用 HTTParty 处理 HTTP 错误?具体来说,我需要捕获 HTTP 502 & 503 和其他错误,例如连接拒绝和超时错误。

I'm working on a Rails application using HTTParty to make HTTP requests. How can I handle HTTP errors with HTTParty? Specifically, I need to catch HTTP 502 & 503 and other errors like connection refused and timeout errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

太阳哥哥 2024-12-19 03:38:32

HTTParty::Response 的实例有一个代码 属性,其中包含 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

An instance of HTTParty::Response has a code attribute which contains the status code of the HTTP response. It's given as an integer. So, something like this:

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
薄情伤 2024-12-19 03:38:32

此答案解决了连接失败的问题。如果未找到 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 问题

This answer addresses connection failures. If a URL isn´t found the status code won´t help you. Rescue it like this:

 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

For more information see: this github issue

难忘№最初的完美 2024-12-19 03:38:32

您还可以使用 ok?bad_gateway? 等方便的谓词方法,如下所示:

response = HTTParty.post(uri, options)
response.success?

所有可能响应的完整列表可以在 Rack::Utils::HTTP_STATUS_CODES 常量。

You can also use such handy predicate methods as ok? or bad_gateway? like this:

response = HTTParty.post(uri, options)
response.success?

The full list of all the possible responses can be found under Rack::Utils::HTTP_STATUS_CODES constant.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文