Je travaille sur une application Rails utilisant HTTParty pour faire des requêtes HTTP. Comment gérer les erreurs HTTP avec HTTParty? Plus précisément, je dois intercepter les erreurs HTTP 502 et 503, ainsi que d’autres erreurs telles que les erreurs de connexion refusée et de délai d’expiration.
Une instance de HTTParty :: Response a un atsortingbut de code
qui contient le code d’état de la réponse HTTP. C’est donné comme un entier. Alors, 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
Cette réponse résout les problèmes de connexion. Si une URL ne trouve pas le code de statut, cela 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, # ie Timeout::Error, SocketError etc end
Pour plus d’informations, voir: ce numéro github
Vous pouvez également utiliser des méthodes de prédicat aussi pratiques que le success?
ou bad_gateway?
de cette façon:
response = HTTParty.post(uri, options) p response.success?
La liste complète des réponses possibles peut être trouvée sous Rack::Utils::SYMBOL_TO_STATUS_CODE
constant.