2014-05-12 30 views
8

Bằng cách nào đó HTTParty trả về 401 trong đó CURL hoạt động tốt. Không chắc chắn cách chuyển mã thông báo trong tiêu đề.HTTParty và ủy quyền qua mã thông báo

làm việc (200):

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

Không làm việc (401):

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

Tôi đã thử với kết quả chỉ "Authorization" => '111'"token" => '111' nhưng cùng.

Trả lời

20

Được quản lý để hoạt động như sau.

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

Phần tiêu đề thiếu dấu ngoặc kép vào cuối . Nên là: tiêu đề: {"Ủy quyền" => "Mã thông báo token = \" 111 \ ""}) –

+0

Cố định @BrianKunzig –

+1

Bạn không thực sự phải bao gồm dấu ngoặc kép cho '111' – kurenn

1

này cũng hoạt động nếu bạn muốn thiết lập tiêu đề của lớp động, ví dụ này là để lấy token Authorization cho Dun và 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

Bạn cũng có thể xác định tiêu đề trong cùng một cách như base_uri hơn là làm nó trong phương thức khởi tạo. Rõ ràng là nó không phụ thuộc vào bất kỳ biến nào được truyền vào phương thức khởi tạo. Ví dụ: bạn có thể sử dụng nó để đặt tiêu đề Cấp quyền cho một API. – craig1410

Các vấn đề liên quan