Ruby on Rails Net :: HTTP use_ssl выдает «неопределенный метод» - PullRequest
13 голосов
/ 26 сентября 2010

Вот мой код:

sock = Net::HTTP.new(url.host, url.port)
sock.use_ssl = true
response = sock.start {|http| http.request(req)}

вот ошибка:

undefined method `use_ssl=' for #<Net::HTTP www.paypal.com:443 open=false>

Google ничего не получает!

спасибо.

Ответы [ 5 ]

17 голосов
/ 26 сентября 2010

Требуется «net / https» в дополнение к «net / http». Тогда будет определено use_ssl=.

require 'net/http'
require 'net/https'
connection = Net::HTTP::new 'www.example.com'
connection.use_ssl = true
5 голосов
/ 26 сентября 2010

Это потому, что функция sock.use_ssl? и возвращает логическое значение, это не метод установки.

Это также, кажется, всегда возвращает ложь. Он переопределяется в пакете Net::HTTPS, который, вероятно, следует использовать, если вы хотите выполнять какие-либо действия с SSL.

Вот рубиновый документ

3 голосов
/ 30 октября 2012

Взгляните на следующий фрагмент:

Net::HTTP.start(url.host, url.port) do |http|
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http.request(req)
end

Вам нужно сделать набор для use_ssl для объекта http, а не для объекта запроса.Я боролся с этим и нашел свой ответ здесь: https://github.com/nicksieger/multipart-post/issues/18

1 голос
/ 19 ноября 2013

Вот как вы можете сделать запрос получения https:

require "net/https"
require "uri"

uri = URI.parse("https://secure.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)

источник: http://www.rubyinside.com/nethttp-cheat-sheet-2940.html

1 голос
/ 05 октября 2012

Если вы получаете «требуемый»: такой файл не загружается - net / https (LoadError) », то это потому, что у вас не установлено.

Если у вас его еще нет, возможно, вам нужны ssl-библиотеки на вашем сервере. Например, в Debian / Ubuntu:

aptitude --assume-yes install libssl-dev

Если вам не повезло, вам может понадобиться пересобрать Ruby с поддержкой SSL. При сборке вручную добавьте --with-openssl к параметрам конфигурации.

Тогда вам нужен камень:

gem install  openssl-nonblock --no-ri --no-rdoc

А теперь, по моему опыту, это должно сработать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...