2014-05-12 58 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