Как использовать httparty вместо net / http или curl - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть запрос 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 голосов
/ 28 декабря 2018

Хорошо, я допустил простую ошибку где-то по пути, потому что оригинальное решение из подобного поста сработало ... Не знаю, как оно не работало 50 раз, когда я работал над этим в прошлый раз, но это была явно ошибка с моей стороны где-то,

0 голосов
/ 23 декабря 2018

Вы пробовали следующее?

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