【问题标题】:HTTPS request using Net::HTTP's block form -- is it possible?使用 Net::HTTP 的块形式的 HTTPS 请求——可能吗?
【发布时间】:2011-09-14 21:17:42
【问题描述】:

要执行不带块形式的 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

我正在使用 ruby​​ 1.8.7

【问题讨论】:

    标签: ruby ssl https net-http


    【解决方案1】:

    请参阅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)
    

    【讨论】:

    • 忘了说,我在1.8.7
    • @John 那你做不到。 Ruby 1.8.7 没有为此的方法签名。不幸的是,如果您想设置use_ssl,您将无法使用块表单。你当然可以打1.9.2版本的start in:gist.github.com/2cdc187fa0c7b608fe2c
    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2015-12-07
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多