Я использую Net :: HTTP с Ruby для обхода URL.Ruby NET :: HTTP Прочитайте заголовок ПЕРЕД телом (без запроса HEAD)?
Я не хочу ползать потоковое аудио, такие как: http://listen2.openstream.co/334
на самом деле я только хочу, чтобы сканировать содержимое HTML, так что никаких PDF, видео, TXT ..
Прямо сейчас, у меня есть и open_timeout и read_timeout установлены на 10, поэтому, даже если я сканирую эти потоковые аудио-страницы, они будут таймаутом.
url = 'http://listen2.openstream.co/334'
path = uri.path
req= Net::HTTP::Get.new(path, {'Accept' => '*/*', 'Content-Type' => 'text/plain; charset=utf-8', 'Connection' => 'keep-alive','Accept-Encoding' => 'Identity'})
uri = Addressable::URI.parse(url)
resp = Net::HTTP.start(uri.host, uri.inferred_port) do |httpRequest|
httpRequest.open_timeout = 10
httpRequest.read_timeout = 10
#how can I read the headers here before it's streaming the body and then exit b/c the content type is audio?
httpRequest.request(req)
end
Однако, есть способ, чтобы проверить заголовок, прежде чем я прочитал тело ответа HTTP, чтобы увидеть, если это аудио? Я хочу сделать это, не отправляя отдельный запрос HEAD.
Могу ли я спросить, что не так с запросом 'HEAD', который был изобретен для решения этой точной проблемы? – mudasobwa
Вы также можете попробовать настроить заголовок «Принять» на «текст/html». Хорошо организованные серверы должны быстро возвращать HTTP 406-ответ, если контент в URL-адресе не представлен в HTML. –