6

我正在尝试从 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上寻找它,但我找不到它。

4

2 回答 2

6

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

Net::HTTP我建议使用 Ruby的Open::URI.

如果您要移动大量 HTTP 数据,您可能需要研究诸如 HTTPClient 或 Curb 或 Typhoeus 之类的东西,它们专为重量级用途而设计,省去了您必须使用Net::HTTP.

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

于 2011-06-03T19:39:29.830 回答
2

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

于 2011-06-03T19:33:04.100 回答