web-dev-qa-db-fra.com

Comment gérer les erreurs avec HTTParty?

Je travaille sur une application Rails utilisant HTTParty pour effectuer des requêtes HTTP. Comment puis-je gérer les erreurs HTTP avec HTTParty? Plus précisément, je dois intercepter HTTP 502 et 503 et d'autres erreurs comme la connexion refusée et erreurs de temporisation.

70
preethinarayan

Une instance de HTTParty :: Response a un attribut code qui contient le code d'état de la réponse HTTP. Il est donné sous forme d'entier. Donc, quelque chose comme ça:

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
92
Jordan Running

Cette réponse corrige les échecs de connexion. Si une URL n’est pas trouvée, le code d’état ne vous aidera pas. Sauvez-le comme ceci:

 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

Pour plus d'informations, voir: ce problème github

32
mklb

Vous pouvez également utiliser des méthodes de prédicat pratiques telles que success? ou bad_gateway? de cette façon:

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

La liste complète des réponses possibles se trouve sous Rack::Utils::SYMBOL_TO_STATUS_CODE constant.

12
Artur Beljajev