2016-05-27 25 views
0

Net :: HTTPを使用してHTTP Headリクエストを作成しようとしています。Net :: HTTPがヘッドリクエストで失敗する

require 'net/http' 

uri = URI("https://github.com/rails/rails") 
http = Net::HTTP.new(uri.host, uri.port) 
request = http.head(uri) 

puts request 

が失敗します。

AFAICTこれは、Net :: HTTPが決して来ない応答本体を待っているからです。 Net :: HTTPにリクエストを行い、レスポンスボディを待たないようにするにはどうすればよいですか?

+1

curlでHEADリクエストを行う正しい方法は '--head'オプションです。 '-X HEAD'では、curlはHEADメソッドを送信しますが、応答本体を待ちます。したがって、遅延が発生します。 –

+0

@ Vasily - ああ、それは理にかなっています。したがって、問題はおそらく内部的にNet :: HTTPが応答本体を待っていて、それを取得していないことでしょうか? –

答えて

1

documentationに正しく従うと、正常に動作します。ライブラリの実装では、ペイロードを読み取るかどうかを決定するときに、使用法に関するいくつかの仮定があると考えられます。

response = nil 
Net::HTTP.start('github.com', :use_ssl => true) do |http| 
    response = http.head('/rails/rails') 
end 

response.each { |k, v| [k, v] } 
関連する問題