2014-02-20 4 views
2

루비에서만 헤더를 어떻게 읽습니까? open에 대한 옵션에서 일부 옵션을 시도했지만 여전히 전체 파일을 읽습니다. Ruby에서 URL의 헤더 만 읽는 방법은 무엇입니까?

irb(main):153:0> html=open(url, :content_length_proc => lambda {|len| p len }) 
177602 
=> #<Tempfile:C:/Users/Chloe/AppData/Local/Temp/open-uri20140220-8496-o5zlda> 

http://ruby-doc.org/stdlib-2.0.0/libdoc/open-uri/rdoc/OpenURI/OpenRead.html#method-i-open

나는 curl -I 또는 wget --spider 같은 것을 원한다.


두 가지 방법이 있습니다. 그것은 간단하고 만드는 URI 개체를 구문 분석이 필요하지 않기 때문에

Net::HTTP.start(uri.host) {|http| http.head(uri.path)['content-length']}

open(url){|f| f.meta['content-length']}

는 내가 처음처럼.

+0

는 http://stackoverflow.com/questions/17900207/getting-headers-from-a-ruby-nethttp 시도 -request-before-making-request- –

+1

또는 http://stackoverflow.com/questions/17454956/get-http-headers-before-downloading-with-open-uri-ruby – Phrogz

+1

@ParitoshPiplewar 그 질문은 RESPONSE 헤더가 아닌 REQUEST 헤더. – Chloe

답변

3

내가 아는 한 OpenURI에서는 가능하지 않지만 Net : HTTP (변경되었을 수 있음)를 사용하고 있습니다. 이 답변을 참조하십시오 : 당신이 Net::HTTPrequest_get 방법을 사용 제안

Get HTTP Headers before downloading with open-uri (Ruby)

합니다. 당신이 보석을 시도 열려 경우

+1

다른 답변에 연결하려면 답이 아닌 댓글을 달 것을 권합니다. – Phrogz

+0

글쎄 그 대답의 텍스트를 복사 할 수 있지만 그것은 무의미한 것 같습니다 –

+2

동의합니다. 그래서 내가 논평을하고이 질문을 복제본으로 폐쇄하기로 결정한 이유입니다. – Phrogz

1

httpclient는 위해 중대하다 :

require 'httpclient' 
HTTPClient.new.head('http://google.com') 
관련 문제