2011-06-09 18 views
5

मैं वर्तमान में उपयोग कर पृष्ठ के स्रोत कोड हो रही है:Net :: HTTP GET स्रोत कोड और स्थिति

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

मैं भी HTTP स्थिति प्राप्त करना चाहते हैं, एक दूसरे अनुरोध नहीं करने पड़ते।

क्या किसी अन्य विधि के साथ ऐसा करने का कोई तरीका है? मैं प्रलेखन को देख रहा हूं, लेकिन मुझे लगता है कि मैं जो खोज रहा हूं उसे नहीं मिल रहा है।

उत्तर

2

क्षमा करें, वास्तव में इसे समझ लिया :)।

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

मेरी राय में, जब तक कि आप कुछ असली कम स्तर तक पहुँच या नियंत्रण की जरूरत है, आप का उपयोग कर बेहतर कर रहे हैं रूबी के अंतर्निहित Open::URI मॉड्यूल:

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/> 

सूचना है कि base_uri के उत्पादन में अलग है मेरे द्वारा पारित यूआरएल से। ओपन :: यूआरआई आपके लिए रीडायरेक्ट का पालन करता है, जो नेट :: HTTP नहीं करेगा। यदि आप अपने कोड पर बहुत सारे यादृच्छिक यूआरएल फेंक रहे हैं और रीडायरेक्ट हैंडलर लिखना नहीं चाहते हैं तो यह बड़ा समय चुका सकता है।

संबंधित मुद्दे