我正在尝试从 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 之类的东西,它们专为重量级使用而设计,可以省去使用 全部编写的麻烦网络::HTTP
.
关于 ECONNREFUSED
错误:您可能想要捕获从 get_response
返回的 HTTPResponse,然后在尝试读取正文之前检查其状态。您现在执行此操作的方式不允许您对失败的请求使用react。
关于ruby-on-rails - 为什么我在 Rails 中得到 "Errno::ECONNREFUSED"和 'net/http'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231470/