我正在尝试从 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 http://www.rubygems.org,但我找不到它。
Net::HTTP http://rubydoc.info/stdlib/net/1.9.2/frames是 Ruby 标准库的一部分。您可以使用require 'net/http'
加载它。
而不是使用Net::HTTP
,这对于你想要做的事情来说是相当低级的,我建议使用 Ruby 的Open::URI http://rubydoc.info/stdlib/open-uri/1.9.2/frames.
如果您要移动大量 HTTP 数据,您可能需要研究 HTTPClient 或 Curb 或 Typhoeus 之类的东西,它们是为重量级使用而设计的,可以省去您必须使用所有内容编写的麻烦Net::HTTP
.
关于ECONNREFUSED
错误:您可能想要捕获从返回的 HTTPResponseget_response
,然后在尝试读取正文之前检查其状态。您现在执行此操作的方式不允许您对失败的请求做出反应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)