2014-05-12 57 views
8

不知何故HTTParty返回401,在捲曲工作正常。不知道如何在標頭中傳遞令牌。HTTParty和授權通過令牌

工作(200):

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

不工作(401):

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

我試圖與剛剛"Authorization" => '111'"token" => '111'但同樣的結果。

回答

20

設法得到它的工作如下。

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

標頭部分缺少在最後報價。應該是: 標題:{「Authorization」=>「Token token = \」111 \「」}) –

+0

Fixed @BrianKunzig –

+1

您實際上不必包含「111」的引號 – kurenn

1

如果要動態地設置類的頭這也適用,這個例子是獲得授權令牌鄧白氏

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

您也可以定義標題以與base_uri相同的方式,而不是在初始化方法中進行。顯然提供它不依賴於傳遞給initialize方法的任何變量。例如,您可以使用它爲API設置授權標頭。 – craig1410