Подтвердить что ты не робот

Как я могу обрабатывать ошибки с помощью HTTParty?

Я работаю над приложением Rails, использующим HTTParty для создания HTTP-запросов. Как я могу обрабатывать ошибки HTTP с помощью HTTParty? В частности, мне нужно поймать HTTP 502 и 503 и другие ошибки, такие как отказ в соединении и тайм-аут.

4b9b3361

Ответ 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.