我正在尝试从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寻找它,但我找不到它。
答案 0 :(得分:6)
Net::HTTP
是Ruby标准库的一部分。您可以使用require 'net/http'
加载它。
我建议使用Ruby的Open::URI
,而不是使用Net::HTTP
,这对于你想做的事情来说是相当低级的。
如果要移动大量HTTP数据,您可能需要查看类似于HTTPClient或Curb或Typhoeus的内容,这些内容专为大量使用而设计,并且可以省去使用{{1 }}
关于Net::HTTP
错误:您可能想要捕获从ECONNREFUSED
返回的HTTPResponse,然后在尝试读取正文之前检查其状态。你现在这样做的方式不会让你对失败的请求作出反应。
答案 1 :(得分:2)
看起来问题是您无法连接到HTTP服务器 您可以尝试检查是否可以在浏览器中访问该URL。