9

要执行不带块形式的 Net::HTTP https 请求,您可以执行以下操作:

...
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
...

但是有没有办法告诉 Net::HTTP 在做块形式时使用 https?

u = URI.parse(url)
Net::HTTP.start(u.host, u.port) do |http|
  # if I put http.use_ssl = true here, ruby complains that this can't
  # be done becuase the sesion has already started
  resp = http.get(u.request_uri)
end

我在红宝石 1.8.7

4

1 回答 1

26

请参阅Net::HTTP.start的文档,它采用可选散列。从文档中:

opt 通过其访问者设置以下值。密钥是 ca_file、ca_path、cert、cert_store、ciphers、close_on_empty_response、key、open_timeout、read_timeout、ssl_timeout、ssl_version、use_ssl、verify_callback、verify_depth 和 verify_mode。如果将 :use_ssl 设置为 true,则可以使用 https,并且 verify_mode 的默认值设置为 OpenSSL::SSL::VERIFY_PEER。

Net::HTTP.start(url.host, url.port, :use_ssl => true)
于 2011-06-14T17:23:33.703 回答