Ошибка 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 сделать запрос и не ждать тела ответа?


person Buck Shlegeris    schedule 27.05.2016    source источник
comment
Правильный способ выполнения запроса HEAD с помощью curl — это опция --head. С -X HEAD curl отправляет метод HEAD, но все еще ждет тела ответа — отсюда и задержки.   -  person Vasiliy Faronov    schedule 28.05.2016
comment
@Vasily--А, это логично. Так что проблема, вероятно, в том, что внутренне Net::HTTP ожидает тело ответа и не получает его, верно?   -  person Buck Shlegeris    schedule 28.05.2016


Ответы (1)


Если вы следуете документация правильно работает. Реализация библиотеки, вероятно, имеет некоторые предположения об использовании, когда она определяет, следует ли читать полезную нагрузку.

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

response.each { |k, v| [k, v] }
person Chen Pang    schedule 28.05.2016