ruby-on-rails - 为什么我在 Rails 中得到 "Errno::ECONNREFUSED"和 'net/http'?

标签 ruby-on-rails ruby 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

一切正常,但仅当我在 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/

相关文章:

ruby-on-rails - 元搜索+数据表

ruby-on-rails - 套接字错误 : HiPay Integration in Rails app (Payment API)

ruby-on-rails - 如何使 Google App Engine 上的 Rails 应用程序重定向到 HTTPS

ruby-on-rails - Ransack 搜索日期作为字符串

Ruby:比较之间有什么区别: "||"和 "or"

ruby-on-rails - use_ssl 值已更改,但在尝试发出 https 请求时 session 已经启动

svg - 将参数传递给 HandlerFunc

ruby-on-rails - Rspec 输出格式 : Documentation

ruby-on-rails - 有没有办法用 rspec 检查内部方法变量?

ASP.NET 相当于 rspec 或 cucumber,用于行为驱动测试