2014-05-12 11 views
8

Irgendwie gibt HTTParty 401 zurück, wo CURL gut funktioniert. Nicht sicher, wie Token in Headern übergeben werden.HTTParty und Autorisierung über Token

Arbeiten (200):

curl http://localhost:3020/api/products -H 'Authorization: Token token="111"' 

Problem (401):

HTTParty.get('http://localhost:3020/api/products', headers: {"Authorization: Token token" => '111'}) 

Ich habe versucht, mit nur "Authorization" => '111' und "token" => '111' aber demselben Ergebnis.

Antwort

20

verwaltet, um es wie folgt zu arbeiten.

HTTParty.get("http://localhost:3020/api/products", headers: {"Authorization" => "Token token=\"111\""}) 
+0

Der Header Abschnitt ist ein Zitat am Ende fehlt . Sollte sein: headers: {"Authorization" => "Token token = \" 111 \ ""}) –

+0

Fixed @BrianKunzig –

+1

Sie müssen nicht unbedingt die Anführungszeichen für die '111' einfügen – kurenn

1

Dies funktioniert auch, wenn Sie Header der Klasse festlegen möchten dieses Beispiel dynamisch, ist das Berechtigungszeichen für Dun and Bradstreet für den Erhalt

require 'httparty' 

require 'certified' 

class DnbAuth 


    include HTTParty 

    debug_output $stdout 

    base_uri "https://maxcvservices.dnb.com/rest/Authentication" 


    def initialize(ct,u,p) 

    self.class.headers 'Content-type' => "#{ct}" 

    self.class.headers 'x-dnb-user' => "#{u}" 

    self.class.headers 'x-dnb-pwd'=> "#{p}" 

    end 


    def token() 


    response = self.class.post("/") 



    end 





end 


ct = 'text/xml' 
u = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
p = 'xxxxxx' 

xx = DnbAuth.new(ct,u,p) 

puts xx.token.message 
+0

Sie können auch Header definieren in der gleichen Weise wie base_uri, anstatt es in der Initialisierungsmethode zu tun. Offensichtlich vorausgesetzt, es hängt nicht von einer der Variablen ab, die an die initialize-Methode übergeben wurden. Zum Beispiel können Sie damit einen Autorisierungskopf für eine API festlegen. – craig1410

Verwandte Themen