Estoy trabajando en una aplicación Rails utilizando HTTParty para realizar solicitudes HTTP. ¿Cómo puedo manejar los errores de HTTP con HTTParty? Específicamente, necesito atrapar HTTP 502 & 503 y otros errores, como errores de rechazo de conexión y tiempo de espera.¿Cómo puedo manejar los errores con HTTParty?
Respuesta
Una instancia de HTTParty::Response tiene un atributo code
que contiene el código de estado de la respuesta HTTP. Se da como un entero. Por lo tanto, algo como esto:
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
Esta respuesta se dirige a fallos en la conexión. Si no se encuentra una URL, el código de estado no lo ayudará. Rescatar de esta manera:
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
Para más información ver: this github issue
Nunca atrapes todo. Debes atrapar la clase base de error de 'HTTParty'. – Oleander
Quizás la idea es detectar errores en el código de HTTParty. HTTParty podría generar errores que no son 'HTTParty :: Errors'. –
Si no hay una red en absoluto, obtengo un 'SocketError', algo a tener en cuenta. Puede intentar desconectar su cable de ethernet para ver que esto suceda. – Kris
También puede utilizar estos métodos predicados prácticos como success?
o bad_gateway?
de esta manera:
response = HTTParty.post(uri, options)
p response.success?
lista completa de posibles respuestas se puede encontrar bajo Net::HTTPResponse::CODE_TO_OBJ
constante.
- 1. ¿Cómo puedo manejar los errores al cargar un iframe?
- 2. ¿Cómo manejar adecuadamente los errores en Express?
- 3. Cómo cambiar base_uri con httparty
- 4. HTTParty con Proxy
- 5. PHP robusto incluye para manejar los errores?
- 6. ¿Cómo manejar los errores WCF de bajo nivel?
- 7. enviar objeto json con httparty
- 8. Cómo manejar errores en Node.js usando Express
- 9. Cómo manejar los errores de recuperación de NSFetchedResultsController?
- 10. Cómo manejar correctamente los errores en el iPhone
- 11. SKProductsRequest - cómo manejar los tiempos de espera/errores de conexión?
- 12. Scrum, cómo manejar errores en el sprint y cómo estimar los errores en el tiempo
- 13. Cómo manejar errores execvp (...) después de fork()?
- 14. Cómo manejar errores 404 con Ruby HTTP :: Net?
- 15. Cómo manejar subrutina redefinido errores en Perl
- 16. ¿Cómo puedo manejar mejor los botones de radio WPF?
- 17. OAuth y HTTParty
- 18. Cómo lidiar con los errores de IE
- 19. Manejar portably errores excepcionales en C++
- 20. ¿Qué errores debo manejar? ¿Cuáles son "fatales"?
- 21. Manejar errores con ErrorController en lugar de una vista directa
- 22. ¿Qué errores/excepciones debo manejar con urllib2.Request/urlopen?
- 23. de análisis HTTParty respuesta
- 24. Manejar errores de transacción de NHibernate
- 25. ServiceStack: cómo lidiar con los errores?
- 26. cómo cargar un archivo de vídeo con httparty
- 27. ¿Cómo o cómo puedes manejar de manera efectiva los errores usando firebase?
- 28. Manejar errores fatales en PHP usando register_shutdown_function()
- 29. ¿Cómo puedo publicar con y variable de instancia y HTTParty a una API que utiliza OAuth2
- 30. ¿Cómo priorizar los errores?
¡Gracias! Eso es lo que estaba planeando hacer. Me preguntaba si había alguna otra manera de manejar el error. – preethinarayan
Esta respuesta no aborda las fallas de conexión. – gtd
En cuanto al comentario de preethinarayan, si quiere capturar/rescatar los errores en su lugar, siempre puede hacer algo como: raise blablahblah if response.code! = 200 De hecho, haré algo similar ... – user435779