С HTTParty я столкнулся с ситуацией, когда я не могу правильно отловить ошибку аутентификации, потому что анализатор JSON или XML перехватывает «HTTP Basic: доступ запрещен». ответ.
Вот мой код:
требуется 'rubygems'
требует 'httparty'
class Client
include HTTParty
def initialize(host, user, password)
self.class.base_uri host
self.class.basic_auth user, password
end
def get(base_path, data_format)
self.class.get("#{base_path}.#{data_format}")
end
end
cl = Client.new('host.com', 'useranme', 'password')
p cl.get('/resource_path', 'json')
Запустите это, если имя пользователя или пароль неверны, я получаю следующую ошибку:
/home/ayurchuk/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at 'HTTP Basic: Access denied. (MultiJson::DecodeError)
'
from /home/ayurchuk/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/json/common.rb:148:in `parse'
from /home/ayurchuk/.rvm/gems/ruby-1.9.3-p0@uitests/gems/multi_json-1.0.4/lib/multi_json/engines/json_common.rb:9:in `decode'
from /home/ayurchuk/.rvm/gems/ruby-1.9.3-p0@uitests/gems/multi_json-1.0.4/lib/multi_json.rb:76:in `decode'
from /home/ayurchuk/.rvm/gems/ruby-1.9.3-p0@uitests/gems/httparty-0.8.1/lib/httparty/parser.rb:116:in `json'
from /home/ayurchuk/.rvm/gems/ruby-1.9.3-p0@uitests/gems/httparty-0.8.1/lib/httparty/parser.rb:136:in `parse_supported_format'
...
Есть ли какой-нибудь возможный способ отловить эти ошибки аутентификации до того, как парсер получит ответ?