2011-06-03 14 views
6

我想從一個URL解析XML文件。當我嘗試這樣的事情:爲什麼在Rails中使用'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 

一切正常,但只有當我這樣做我的Rails項目之外。如果我嘗試在我的Rails 3項目中包含這個文件並解析它,我得到錯誤"Errno::ECONNREFUSED in [controller]" - Connection refused - connect(2)。我不知道如何安裝net/http組件。我正在尋找http://www.rubygems.org,但我找不到它。

回答

6

Net::HTTP是Ruby標準庫的一部分。您可以使用require 'net/http'加載它。

而不是使用Net::HTTP,這對於你想做的事情來說是相當低級的,我推薦使用Ruby的Open::URI

如果您正在移動大量的HTTP數據,您可能需要查看HTTPClient或Curb或Typhoeus等設計用於大量使用的內容,並省去使用Net::HTTP編寫所有內容的麻煩。

關於ECONNREFUSED錯誤:您可能想要捕獲從get_response返回的HTTPResponse,然後在嘗試讀取正文之前檢查其狀態。你現在做的方式不會讓你對失敗的請求做出反應。

+0

我收到同樣的錯誤,但它是在get_response甚至返回之前。我無法弄清楚如何解決這個問題。 – finiteloop 2012-06-25 23:22:55

+3

不要忘記'http://',這是我的問題: - / – finiteloop 2012-06-25 23:36:44

2

看起來問題是您無法連接到HTTP服務器。
您可以嘗試檢查您是否可以在瀏覽器中訪問該URL。

+0

檢查HTTP服務器之前,我會驗證互聯網是否實際連接:) – 2015-01-17 21:43:56

相關問題