Ich muss eine GET-Anfrage in einer öffentlichen API machen. Ich weiß, dass die Login- und Passwortdaten korrekt sind, aber die API gibt einen Authentifizierungsfehler zurück. Per Postbote wird die Anfrage erfolgreich durchgeführt. Das Problem liegt im selben Ruby-Code.Get mit Basic Auth Ruby funktioniert nicht
Code:
nfe_key = '41170608187168000160550010000001561000000053'
params = {'grupo' => 'edoc','cnpj' => '08187168000160', 'ChaveNota' => nfe_key, 'Url' => '1'}
url = URI.parse('https://managersaashom.tecnospeed.com.br:7071/ManagerAPIWeb/nfe/imprime')
get = Net::HTTP::Get.new(url.path)
get.basic_auth 'admin', '123mudar'
get.set_form_data(params)
request = Net::HTTP.new(url.host, url.port)
request.read_timeout = 500 #seconds
request.use_ssl = true
request.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = request.start {|http| http.request(get) }
puts response.body
Ich mache eine Anfrage auf eine POST-Strecke in der gleichen Art und Weise und es funktioniert. Ich verstehe nicht, warum mit GET nicht funktioniert.
Mit post-Methode funktioniert:
params = {'grupo' => 'edoc','cnpj' => '08187168000160', 'arquivo' => 'formato=XML
' + xml}
url = URI.parse('https://managersaashom.tecnospeed.com.br:7071/ManagerAPIWeb/nfe/envia')
post = Net::HTTP::Post.new(url.path)
post.basic_auth 'admin', '123mudar'
post.set_form_data(params)
request = Net::HTTP.new(url.host, url.port)
request.read_timeout = 500 #seconds
request.use_ssl = true
request.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = request.start {|http| http.request(post) }
puts response.body
In Postbote:
Methode: post Grund Auth: Benutzername Admin Passwort 123mudar