Ruby on rails 发出http请求时出错。超时::错误和IOError:use_ssl值已更改,但会话已启动

Ruby on rails 发出http请求时出错。超时::错误和IOError:use_ssl值已更改,但会话已启动,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个奇怪的问题,我觉得这只是一个小小的明显错误 当我做出以下实施时 url = URI.parse(helper.full_url) req = Net::HTTP::Get.new(url.to_s) res = Net::HTTP.start(url.host, url.port) { |http| http.request(req) } 给我下面有错误 超时::错误 但这一实施过程中存在的问题 url = URI.parse(helper.full_url) req = Net:

我有一个奇怪的问题,我觉得这只是一个小小的明显错误

当我做出以下实施时

url = URI.parse(helper.full_url)
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) { |http|
  http.request(req)
}
给我下面有错误

超时::错误

但这一实施过程中存在的问题

url = URI.parse(helper.full_url)
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host, url.port) { |http|
  http.use_ssl = true
  http.request(req)
}
给我这个错误

IOError:use\u ssl值已更改,但会话已启动


有什么问题吗?

您不能在Net::http.start之后使用http.use\u ssl,您应该在Net::http.start之前使用它。看

试试这个:

uri = URI.parse(helper.full_url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'

http.start do
  request = Net::HTTP::Get.new(uri.request_uri)
  puts http.request(request)
end

我希望像我放在这里一样使用结果
res=Net::HTTP.start(url.host,url.port){| HTTP | HTTP.use_ssl=true HTTP.request(req)}
uri = URI.parse(helper.full_url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'

http.start do
  request = Net::HTTP::Get.new(uri.request_uri)
  puts http.request(request)
end