Как я могу обработать ошибки с HTTParty? - PullRequest
69 голосов
/ 27 октября 2011

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

Ответы [ 3 ]

90 голосов
/ 27 октября 2011

Экземпляр 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
30 голосов
/ 06 ноября 2014

Этот ответ относится к сбоям подключения. Если 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

12 голосов
/ 22 июня 2016

Вы также можете использовать такие удобные методы предикатов, как success? или bad_gateway? следующим образом:

response = HTTParty.post(uri, options)
p response.success?

Полный список возможных ответов можно найти в разделе Rack::Utils::SYMBOL_TO_STATUS_CODE константа.

...