【问题标题】:Ruby on rails HTTP request issueRuby on rails HTTP 请求问题
【发布时间】:2015-06-24 16:16:35
【问题描述】:

我是 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 not supported。 [RFC3986]

我也试过下面的。我收到 401-未经授权的错误

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

我怎样才能提出在这种情况下有效的请求。任何帮助将不胜感激。

【问题讨论】:

  • 您确实需要什么帮助?
  • @ArslanAli 在这种情况下我怎样才能提出我的工作要求?
  • @maxcal 目标页面需要认证。但我不知道如何通过
  • open("http://myurl.com/json", :http_basic_authentication=>[ "user", "pass"] ) ,它对我有用,也许你应该给我们更多细节

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


【解决方案1】:

您需要使用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

【讨论】:

  • 解决了 Auth 问题。但现在我得到initialize': undefined method empty?请指教。
  • 您很可能在一个为零的变量上调用.empty?。查看堆栈跟踪并找到引发错误的位置。
  • 你能解释一下吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2014-08-31
  • 2012-05-24
相关资源
最近更新 更多