2014-05-12 20 views
8

W jakiś sposób HTTParty zwraca 401, gdzie CURL działa poprawnie. Nie wiem, jak przekazać token w nagłówkach.HTTParty i autoryzacja za pomocą tokena

robocza (200):

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

Nie działa (401):

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

Próbowałem tylko z "Authorization" => '111' i "token" => '111' ale sam rezultat.

Odpowiedz

20

Zarządzane, aby działało jak poniżej.

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

Sekcja nagłówki brakuje cytat na samym końcu . Powinno być: nagłówki: {"Autoryzacja" => "Token token = \" 111 \ ""}) –

+0

Naprawiono @BrianKunzig –

+1

Nie musisz w rzeczywistości uwzględniać cudzysłowów dla '111' – kurenn

1

Działa to także wtedy, gdy chcesz ustawić nagłówki klasy dynamicznie, ten przykład jest dla uzyskania tokenu Upoważnienie do Dun and Bradstreet

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

Możesz także zdefiniować nagłówki w taki sam sposób, jak base_uri zamiast robić to w metodzie initialize. Oczywiście pod warunkiem, że nie zależy od żadnej z zmiennych przekazanych do metody initialize. Można na przykład użyć go do ustawienia nagłówka autoryzacji dla interfejsu API. – craig1410