2010-05-09 18 views
5

मैं वेब पेजों का विश्लेषण करने की कोशिश कर रहा हूं लेकिन मुझे कभी-कभी 404 त्रुटियां मिलती हैं।रूबी HTTP :: नेट के साथ 404 त्रुटियों को कैसे संभालें?

result = Net::HTTP::get URI.parse(URI.escape(url)) 

मैं किस प्रकार जाँच कर अगर result एक 404 त्रुटि कोड है: यहाँ कोड मैं वेब पेज प्राप्त करने के लिए का उपयोग कर रहा है?

उत्तर

11
इस तरह अपने कोड पुनर्लेखन

:

uri = URI.parse(url) 
result = Net::HTTP.start(uri.host, uri.port) { |http| http.get(uri.path) } 
puts result.code 
puts result.body 

कि शरीर के बाद स्थिति कोड प्रिंट होगा।

+0

धन्यवाद! मैंने कोशिश की लेकिन परिणाम। स्टेटस काम नहीं किया। इसके बजाय, मैंने परिणाम.class.name == "HTTPOK" की जांच की, यह चाल है :-) –

+1

क्षमा करें, यह 'result.code' होना चाहिए, न कि 'result.status'। मैंने अपना जवाब अपडेट कर लिया है। – Theo

+0

नोट: यूआरआई मॉड्यूल 'नेट/http' में है –

1

जैसा कि आप जानते हैं, आपका कोड हमेशा प्रतिक्रिया निकाय वापस करेगा, चाहे कोई त्रुटि हो या नहीं। आदेश प्रतिक्रिया कोड का परीक्षण करने के लिए, थियो के जवाब का उपयोग करें, और निम्न अगर बयान, उदाहरण के लिए:

if result.code.to_i < 400 
    puts "success" 
end 

इस उदाहरण कोड (जो एक स्ट्रिंग है) एक पूर्णांक में बदलता है, और व्यवहार रीडायरेक्ट और विभिन्न 200 कोड सफल के रूप में

विभिन्न कोड के लिए इस लौटे देखें: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

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