2011-06-09 22 views
5

Şu anda kullanarak sayfanın kaynak kodunu alıyorum: İkinci isteği yapmadan, ben de HTTP durumunu almak istiyorumNet :: HTTP alma kaynak kodu ve durum

Net::HTTP.get(URI.parse(page.url)) 

.

Bunu başka bir yöntemle yapmanın bir yolu var mı? Belgelere bakıyorum ama aradığım şeyi bulamıyorum.

cevap

2

Üzgünüm, aslında anladım :). Bence

ruby-1.9.2-p136 :004 > r = Net::HTTP.get_response(URI.parse('http://badurlexample.com')) 
=> #<Net::HTTPInternalServerError 500 Internal Server Error readbody=true> 
ruby-1.9.2-p136 :005 > r.inspect 
=> "#<Net::HTTPInternalServerError 500 Internal Server Error readbody=true>" 
ruby-1.9.2-p136 :006 > r.body 
=> "1 Errors:\r\nLine: 40 - ; expected" 
ruby-1.9.2-p136 :007 > 
7

, bazı gerçek düşük düzeyde erişim veya kontrole ihtiyaç olmadıkça, kullanmakta daha iyiyiz Yakut yerleşik Open::URI modülü:

require 'open-uri' 
io = open('http://www.example.org/') #=> #<StringIO:0x0000010103e240> 
body = io.read[0, 50] #=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Trans" 
io.status #=> ["200", "OK"] 
io.base_uri #=> #<URI::HTTP:0x00000100bf2ad8 URL:http://www.iana.org/domains/example/> 

Uyarı base_uri çıktısı farklı olduğunu Gönderdiğim URL'den. Açık :: URI sizin için yönlendirmeleri izler, Net :: HTTP bunu yapmaz. Kodunuzda çok fazla rastgele URL atıyorsanız ve yönlendirme işleyicisini yazmak zorunda kalmak istemiyorsanız, bu çok zaman harcayabilir.

İlgili konular