2014-01-06 2 views
44

Я использую локальный сервер для тестирования приложения и отправки запросов на этот сервер с моей собственной машины.Как заставить HTTParty игнорировать SSL?

SSL-протокол тестового сервера является плохим, и HTTParty выдает ошибки из-за этого. Из того, что я прочитал, HTTParty должен игнорировать SSL по умолчанию, но когда я пытаюсь сделать это:

HTTParty.get("#{ @settings.api_server }#{ url }").parsed_response 

Он бросает эту ошибку:

OpenSSL::SSL::SSLError at/
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 

Как сделать это игнорировать SSL?

+2

изменить api URI на 'http' вместо' https' или удалить порт 443, если это указано? –

+0

См. Здесь - https://github.com/jnunemaker/httparty/issues/93 – maerics

+0

Дух, используя http, был в порядке, tnx Майк! Я видел эту проблему, о которой вы говорите, маэрики, если я правильно понимаю эту маленькую беседу, я не должен был принимать эти ошибки в первую очередь, поэтому я действительно поставил этот вопрос, я был невежественным. –

ответ

51

В последней версии HTTParty вы можете использовать опцию проверки, чтобы отключить проверку SSL;

HTTParty.get("#{ @settings.api_server }#{ url }", :verify => false).parsed_response 
+0

httparty-0.13.7 - не повезло – okliv

+0

Я пробовал с 0,13. 7 и ваше предложение отлично работало. Мой вызов был немного проще: HTTParty.get (url,: verify => false) – guero64

22

Чтобы HTTParty всегда пропустить CERT проверки SSL, и не должен указать это в каждом вызове:

require 'httparty' 
HTTParty::Basement.default_options.update(verify: false) 

HTTParty.get("#{@settings.api_ssl_server}#{url1}") 
HTTParty.get("#{@settings.api_ssl_server}#{url2}") 
HTTParty.get("#{@settings.api_ssl_server}#{url3}") 
# ... 

Вы также можете сделать это контекстным к классу при включении HTTParty как a модуль:

require 'httparty' 

class Client 
    include HTTParty 

    default_options.update(verify: false) 
end 

Client.get("#{@settings.api_ssl_server}#{url1}") 
Client.get("#{@settings.api_ssl_server}#{url2}") 
Client.get("#{@settings.api_ssl_server}#{url3}") 
+0

работал для меня с последней версией httparty 0.13.7. спасибо (Y) –

1

Если вы хотите по-прежнему отправлять сертификаты, используйте этот флаг:

verify_peer: false 
+0

Это лучший ответ ИМО. Я не понимаю, почему кто-то хочет полностью отключить SSL, особенно в производственной среде. –

Смежные вопросы