【发布时间】:2018-12-23 00:21:52
【问题描述】:
我有一个有效的 curl 请求
curl -X GET -k 'https://APIADDRESSHERE' -u 'USERNAME:PASSWORD' -H 'Content-Type: application/json'
我也可以在 ruby 中使用它:
require 'net/http'
require 'uri'
require 'openssl'
uri = URI.parse("https://APIADDRESSHERE")
request = Net::HTTP::Get.new(uri)
request.basic_auth("USERNAME", "PASSWORD")
request.content_type = "application/json"
req_options = {
use_ssl: uri.scheme == "https",
verify_mode: OpenSSL::SSL::VERIFY_NONE,
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
但是,当我使用 httparty 尝试此操作时,我不断收到 401 错误消息:
在 SecurityContext 中未找到 Authentication 对象 此请求需要 HTTP 身份验证。
我已经尝试了以下的很多变体,但我被卡住了。
response = HTTParty.get('https://APIURLHERE', {"headers": { "Authorization:" => "BASE64ENCODEDUSERNAMEANDPASSWORD", "Content-Type" => "application/json" }})
【问题讨论】:
-
不是重复的
-
可以肯定的是,BASE64ENCODEDUSERNAMEANDPASSWORD 是指 USER:PASSWORD 的 Base64 对吗? (包括冒号)。
-
怎么不是重复的?您正在将基本身份验证与 net http 一起使用,并且您想知道如何将基本身份验证与 httparty 一起使用。 server 返回的错误消息甚至告诉您使用基本身份验证。
-
我尝试使用基本身份验证,但它需要一个字符串,您可以在另一个上看到类似的评论,其他人也使用字符串卡住