如何使用httparty代替net / http或curl

时间:2018-12-23 00:21:52

标签: ruby httparty

我有一个有效的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中找不到身份验证对象。此请求需要HTTP身份验证。

我尝试了以下多种变体,但遇到了麻烦。

response = HTTParty.get('https://APIURLHERE', {"headers": { "Authorization:" => "BASE64ENCODEDUSERNAMEANDPASSWORD", "Content-Type" => "application/json" }})

2 个答案:

答案 0 :(得分:0)

您尝试过以下吗?

response = HTTParty.get('https://APIURLHERE', headers: { "Authorization:" => "BASE64ENCODEDUSERNAMEANDPASSWORD", "Content-Type" => "application/json" })

答案 1 :(得分:0)

好吧,我在此过程中的某个地方犯了一个简单的错误,因为类似帖子中的原始解决方案起作用了……不知道上次我进行此操作时它是如何工作了50次,但这显然是我这个地方的一个错误。