Sto lavorando a un'applicazione Rails utilizzando HTTParty per effettuare richieste HTTP. Come posso gestire gli errori HTTP con HTTParty? In particolare, ho bisogno di prendere HTTP 502 & 503 e altri errori come errori di connessione rifiutata e di timeout.Come posso gestire gli errori con HTTParty?
risposta
Un'istanza di HTTParty::Response ha un attributo code
che contiene il codice di stato della risposta HTTP. È dato come un numero intero. Quindi, qualcosa di simile:
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
Questa risposta risolve errori di connessione. Se un URL non viene trovato, il codice di stato non ti aiuterà. Salvare in questo modo:
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
Per ulteriori informazioni si veda: this github issue
Non catturare mai tutto. Dovresti prendere la classe base di errore di 'HTTParty'. – Oleander
Forse l'idea è di catturare errori nel codice HTTParty. HTTParty potrebbe generare errori che non sono 'HTTParty :: Errors'. –
Se non c'è nessuna rete ottengo un 'SocketError', solo qualcosa di cui essere a conoscenza. Puoi provare a scollegare il cavo ethernet per vederlo accadere. – Kris
È anche possibile utilizzare tali metodi predicato a portata di mano come success?
o bad_gateway?
in questo modo:
response = HTTParty.post(uri, options)
p response.success?
Lista completa delle possibili risposte può essere trovato sotto la costante Net::HTTPResponse::CODE_TO_OBJ
.
- 1. Come gestire gli errori con EasyNetQ/RabbitMQ
- 2. Come posso gestire gli errori 503 con open-uri?
- 3. come gestire gli errori di risposta ajax
- 4. Come posso gestire gli errori in Global.asax Application_Start?
- 5. Boto3, python e come gestire gli errori
- 6. Come gestire gli errori execvp (...) dopo fork()?
- 7. Come gestire gli errori in AsyncTaskLoader personalizzato?
- 8. Come gestire gli errori asincroni in Flux?
- 9. come gestire gli errori usando python?
- 10. Come gestire gli errori nelle risposte fetch() con Redux Thunk?
- 11. Come gestire gli errori 404 con Ruby HTTP :: Net?
- 12. Rails 3 - AJAX, risposta JS - come gestire gli errori
- 13. file_get_contents buon modo per gestire gli errori
- 14. Include robusti PHP per gestire gli errori?
- 15. Come gestire gli errori in Node.js utilizzando Express
- 16. Come gestire correttamente gli errori in un'applicazione n-tier?
- 17. HTTParty con Proxy
- 18. Come gestire gli errori di arrotondamento in Shapely
- 19. RxJava/RxBinding: come gestire gli errori su RxView
- 20. Apache Spark Streaming, Come gestire gli errori di dipendenza downstream
- 21. Come gestire gli errori di runtime in Haskell?
- 22. Come gestire gli errori WCF di basso livello?
- 23. Come gestire gli errori di recupero di NSFetchedResultsController?
- 24. Come posso vedere gli errori in console.developers.google.com?
- 25. come gestire gli errori del corpo-parser in nodejs espressi
- 26. Come gestire gli errori di decodifica di cv :: VideoCapture?
- 27. Come gestire subroutine ridefinito gli errori in Perl
- 28. Come gestire gli errori del servizio risorse $ in AngularJS
- 29. come gestire gli errori in Task.map di sedano
- 30. Come gestire correttamente gli errori previsti in hystrix fallback?
Grazie! Questo è quello che stavo pensando di fare. Mi chiedevo se esistesse un altro modo per gestire gli errori. – preethinarayan
Questa risposta non risolve i problemi di connessione. – gtd
Per quanto riguarda il commento di preethinarayan, se invece si desidera rilevare/salvare gli errori, si può sempre fare qualcosa del tipo: aumentare blablahblah se response.code! = 200 In realtà sto facendo qualcosa di simile .. – user435779