Ruby on rails HTTP请求问题

时间:2015-06-24 07:37:03

标签: ruby-on-rails http ruby-on-rails-4 getjson

我是Ruby on Rails的新手。我有一个指向JSON输出的url。当我像http://user:pass@myurl.com/json一样直接运行URL时,我得到的回复没有任何认证。但是http://myurl.com/json需要通过标准的apache弹出认证框输入用户名和密码。我试图从我的rails控制器访问此URL,如下所示:

result = JSON.parse(open("http://user:pass@myurl.com/json").read)

当我尝试这样做时,我只是收到一个错误,其中包含ArgumentError,不支持userinfo。 [RFC3986]

我也试过以下一个。我收到401-Unauthorized错误

open("http://...", :http_basic_authentication=>[user, password])

如何提出在这种情况下有效的请求。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要使用Net::HTTP(或某些other HTTP client)。

require 'net/http'
require 'uri'
require 'json'

uri = URI('http://myurl.com/json')
req = Net::HTTP::Get.new( uri )
req.basic_auth 'user', 'pass'
res = Net::HTTP.start(uri.hostname, uri.port) {|http|
  http.request(req)
}
result = JSON.parse(res.body)
puts result