JSON从远程URL解析,需要在摘要身份验证中使用用户名和密码

时间:2015-04-23 15:26:56

标签: ruby json authentication digest

我有一个指向JSON输出的URL,但它需要通过标准的Apache弹出认证框输入用户名和密码。我试图从我的Rails控制器访问此URL:

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

然而它不起作用。我的控制器顶部有以下内容:

require 'open-uri'
require 'json'

我刚收到一条错误,上面写着“ArgumentError,userinfo不受支持。[RFC3986]”。

我还尝试了基本身份验证代码,但由于我正在使用摘要身份验证,因此无效:

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

1 个答案:

答案 0 :(得分:1)

我会使用HTTPClient。它是另一个依赖项,但它使得使用摘要式身份验证的RESTful请求非常容易。

require "httpclient"

# foundational parts of your URI
base = "http://myurl.com"

# create a new http connection instance
http = HTTPClient.new

# set authentication on the connection
http.set_auth(base, "user", "pass")

# make your request
response = http.get("#{base}/json")

# parse the response's JSON into a Hash
JSON.parse response.body