为什么我在Rails中使用’net / http’获得“Errno :: ECONNREFUSED”?

我试图从URL解析XML文件。 当我尝试这样的事情时:

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上找它,但我找不到它。

Net::HTTP是Ruby标准库的一部分。 您可以使用require 'net/http'来加载它。

我建议使用Ruby的Open::URI ,而不是使用Net::HTTP ,这对你想做的事情来说是相当低级的。

如果您要移动大量HTTP数据,您可能需要查看类似于HTTPClient或Curb或Typhoeus的内容,这些内容专为大量使用而设计,并且可以省去使用Net::HTTP编写所有内容的麻烦。

关于ECONNREFUSED错误:您可能希望捕获从get_response返回的HTTPResponse,然后在尝试读取正文之前检查其状态。 你现在这样做的方式不会让你对失败的请求作出反应。

看起来问题是您无法连接到HTTP服务器。
您可以尝试检查是否可以在浏览器中访问该URL。