どういうわけか、HTTPartyはCURLが正常に機能する401を返します。ヘッダーでトークンを渡す方法がわからない。
作業中(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'
だけで試しましたが、同じ結果になりました。
次のように動作させることができました。
HTTParty.get("http://localhost:3020/api/products", headers: {"Authorization" => "Token token=\"111\""})
これは、クラスのヘッダーを動的に設定する場合にも機能します。この例は、Dunと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