Ruby:阻止HTTP.new.start和动态HTTP(S)

Jor*_*ell 8 ruby net-http

我需要一个应用程序来阻止HTTP请求,所以我不得不添加几行代码,唯一一个我无法弄清楚的是声明if uri.scheme == 'https'; http.use_ssl = true是否有一种方法我可以在当前语句中设置http/https:

Net::HTTP.new(uri.host, uri.port).start do |http|

  # Causes and IOError... 
  if uri.scheme == 'https'
    http.use_ssl = true
  end

  request = Net::HTTP::Get.new(uri.request_uri)
  http.request(request)
end
Run Code Online (Sandbox Code Playgroud)

添加: IOError: use_ssl value changed, but session already started

Jor*_*ing 20

根据文档,您无法use_ssl=在启动会话后(即之后start)进行调用.您必须先设置它,例如:

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

http.start do |h|
  h.request Net::HTTP::Get.new(uri.request_uri)
end
Run Code Online (Sandbox Code Playgroud)


War*_*Hog 5

尝试将您的代码更改为

http = Net::HTTP.new(uri.host, uri.port)

if uri.scheme =='https'
  http.use_ssl = true
end

http.start do
  request = Net::HTTP::Get.new(uri.request_uri)
  puts http.request(request)
end
Run Code Online (Sandbox Code Playgroud)