2011-06-03 13 views
6

मैं एक यूआरएल से एक एक्सएमएल फ़ाइल पार्स करने की कोशिश कर रहा हूं। जब मैं कुछ इस तरह का प्रयास करें:रेल में 'net/http' के साथ मुझे "Errno :: ECONNREFUSED" क्यों मिलता है?

require 'net/http' 
require 'rubygems' 
require 'xmlsimple' 

url = 'http://my-address.com/xmltest/note.xml' 
xml_data = Net::HTTP.get_response(URI.parse(url)).body 

सब कुछ काम करता है, लेकिन केवल जब मैं अपने रेल परियोजना के इस बाहर है। अगर मैं अपनी फाइल 3 प्रोजेक्ट में इस फ़ाइल को शामिल करने का प्रयास करता हूं और इसे वहां पार्स करता हूं, तो मुझे त्रुटि "Errno::ECONNREFUSED in [controller]" - Connection refused - connect(2) मिलती है।

मेरी समस्या निम्न है: मुझे नहीं पता कि net/http घटक कैसे स्थापित करें। मैं इसे http://www.rubygems.org पर देख रहा हूं, लेकिन मुझे यह नहीं मिल रहा है।

उत्तर

6

Net::HTTP रूबी की मानक लाइब्रेरी का हिस्सा है। आप इसे लोड करने के लिए require 'net/http' का उपयोग कर सकते हैं।

Net::HTTP का उपयोग करने के बजाय, जो आप करना चाहते हैं उसके लिए काफी कम स्तर है, मैं रूबी के Open::URI का उपयोग करने की सलाह दूंगा।

यदि आप बहुत सारे HTTP डेटा ले जा रहे हैं, तो आप HTTPClient या Curb या Typhoeus जैसे कुछ देखना चाहते हैं, जो भारी वजन के उपयोग के लिए डिज़ाइन किए गए हैं और Net::HTTP का उपयोग करके इसे लिखने की परेशानी को बचाते हैं।

ECONNREFUSED त्रुटि के संबंध में: आप get_response से वापस लौटे HTTPResponse को कैप्चर करना चाहते हैं, फिर शरीर को पढ़ने की कोशिश करने से पहले इसकी स्थिति जांचें। जिस तरह से आप इसे कर रहे हैं अब आपको एक असफल अनुरोध पर प्रतिक्रिया नहीं देता है। HTTP-सर्वर की जांच करने से पहले

+0

मुझे एक ही त्रुटि मिल रही है, हालांकि यह get_response भी लौटने से पहले है। मैं इस मुद्दे को ठीक करने का तरीका नहीं समझ सकता। – finiteloop

+3

'http: //' को न भूलें, जो मेरी समस्या थी: - / – finiteloop

2

ऐसा लगता है कि समस्या यह है कि आप HTTP-सर्वर से कनेक्ट नहीं हो सकते हैं।
आप यह जांचने का प्रयास कर सकते हैं कि आप ब्राउज़र में यूआरएल तक पहुंच सकते हैं।

+0

, मैं सत्यापित करता हूं कि इंटरनेट वास्तव में कनेक्ट है या नहीं :) –

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