gpt4 book ai didi

ruby-on-rails - use_ssl 值已更改,但在尝试发出 https 请求时 session 已经启动

转载 作者:行者123 更新时间:2023-12-04 17:57:00 24 4
gpt4 key购买 nike

我正在使用 Rails 4.2.7 和这个用于发出 Net::Http get 请求的代码

    req = Net::HTTP::Get.new(url)
if !headers.nil?
headers.each do |k, v|
req[k] = v
end
end
res = Net::HTTP.new(uri.host, uri.port).start do |http|
http.use_ssl = (uri.scheme == "https")
http.request(req)
end
status = res.code
content_type = res['content-type']
content_encoding = res['content-encoding']
content = res.body

但是,当我制作一个方案为“https”的方案时,出现以下错误

Error during processing: use_ssl value changed, but session already started
/Users/davea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:758:in `use_ssl='
/Users/davea/Documents/workspace/myproject/app/helpers/webpage_helper.rb:118:in `block in get_content'
/Users/davea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb:853:in `start'

如何在设置 https 的同时仍然能够发出我的 GET 请求?

最佳答案

根据文档,use_ssl必须在开始 session 之前设置。

这是我通常的流程:

uri          = URI 'some endpoint with encoded params'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
headers = headers.each_with_object({}) { |(k, v), hash| hash[k] = v }
http.get(uri.request_uri, initheader = headers)

请参阅 get 上的文档.


你的旁注

if !headers.nil?

如果你只检查是否存在,它会更具可读性:

if headers.present?

或者更短:

if headers # would return true unless it's nil or false

关于ruby-on-rails - use_ssl 值已更改,但在尝试发出 https 请求时 session 已经启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39668324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com