Я работаю над приложением Rails, использующим HTTParty для создания HTTP-запросов. Как я могу обрабатывать ошибки HTTP с помощью HTTParty? В частности, мне нужно поймать HTTP 502 и 503 и другие ошибки, такие как отказ в соединении и тайм-аут.
Как я могу обрабатывать ошибки с помощью HTTParty?
Ответ 1
Экземпляр HTTParty:: Response имеет атрибут code
, который содержит код состояния ответа 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
Ответ 2
Этот ответ касается сбоев подключения. Если 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
Ответ 3
Вы также можете использовать такие удобные предикатные методы как success?
или bad_gateway?
следующим образом:
response = HTTParty.post(uri, options)
p response.success?
Полный список возможных ответов можно найти в константе Net::HTTPResponse::CODE_TO_OBJ
.