8

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

追加した:IOError: use_ssl value changed, but session already started

4

2 に答える 2

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
于 2011-10-17T20:30:31.170 に答える
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
于 2011-10-17T20:10:11.323 に答える