2014-07-11 13 views
31

Jak przekazywać zapytania i nagłówki w metodzie post za pomocą HTTparty. Robię następująco Ale to rzucaPrzekazywanie nagłówków i zapytań w HTTparty

query = {:method => "neworder", :nonce => 1404996028, :order_type => "buy", :quantity=>1,:rate=>1} 
headers = {:key=> "87819747209090199871234", :sign=> "0a3888ac7f8e411ad73a0a503c55db70a291rsf34bfb9f9a47147d5200882674f717f6ede475669f3453"} 

HTTParty.post("https://www.acb.com/api/v2/market/LTC_BTC/", :query => query, :headers => headers) 

Ale to wyrzuca następujący błąd. Jak zarządzać ciągami znaków zapytania i nagłówkami za pomocą HTTparty.

/home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:172:in `capitalize': undefined method `split' for :key:Symbol (NoMethodError) 
from /home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:165:in `block in each_capitalized' 
from /home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:164:in `each' 
from /home/user/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/http/header.rb:164:in `each_capitalized' 

Odpowiedz

67

Zastosowanie Strings dla klawiszy skrótu zamiast Symbols.

query = { 
    "method"  => "neworder", 
    "nonce"  => 1404996028, 
    "order_type" => "buy", 
    "quantity" => 1, 
    "rate"  => 1 
} 
headers = { 
    "key" => "8781974720909019987", 
    "sign" => "0a3888ac7f8e411ad73a0a503c55db70a291bfb9f9a47147d5200882674f717f6ede475669f3453" 
} 

HTTParty.post(
    "https://www.acb.com/api/v2/market/LTC_BTC/", 
    :query => query, 
    :headers => headers 
) 

To był prawdopodobnie tylko headers które były przyczyną problemu z powodu błędu występującego w net/http/header.rb:172. Ważną informacji bycia undefined method 'split' for :key:Symbol (NoMethodError)

symbol błędu w irb:

irb(main):002:0> "Something".split 
=> ["Something"] 

irb(main):003:0> :Something.split 
NoMethodError: undefined method `split' for :Something:Symbol 
     from (irb):3 
     from /usr/bin/irb:12:in `<main>' 
+0

uważam, że niektóre z wywołania API używając ': organ do spraw zamiast': query' zadziała. Zasadniczo pamiętaj o tym, jak określasz parametry żądania – divergent

2

Minęło trochę stare pytanie, ale mieliśmy ten sam problem niedawno, więc staram się dołączyć moje rozwiązania:

1) odpowiedź powyżej pracuje:

"headers": { "Authorization"=> "Bearer #{token}" }

2) Ewentualnie inne soluti na to, aby uaktualnić swój rubin do 2.2.5 i co można zrobić, to:

headers: { Authorization: "Bearer #{token}" }

HTH

Powiązane problemy