我有一个指向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])
答案 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