为什么我在Rails中使用'net/http'获得"Errno :: ECONNREFUSED"?

use*_*705 6 ruby ruby-on-rails net-http

我试图从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
Run Code Online (Sandbox Code Playgroud)

一切正常,但只有当我在Rails项目之外这样做时.如果我尝试在我的Rails 3项目中包含此文件并在那里解析它,我会收到错误"Errno::ECONNREFUSED in [controller]" - Connection refused - connect(2).

我的问题如下:我不知道如何安装net/http组件.我在http://www.rubygems.org上寻找它,但我找不到它.

the*_*Man 6

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

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

如果您要移动大量HTTP数据,您可能需要查看类似于HTTPClient或Curb或Typhoeus的内容,这些内容专为大量使用而设计,并且您可以省去必须全部使用它们的麻烦Net::HTTP.

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