Somehow HTTParty returns 401 where CURL works fine. Not sure how to pass token in headers.

Working (200):

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

Not working (401):

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

I have tried with just "Authorization" => '111'and "token" => '111' but same result.

有帮助吗?

解决方案

Managed to get it working as follows.

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

其他提示

This also works if you want to set headers of the class dynamically, this example is for obtaining the Authorization token for 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top