Передача заголовков и параметров запроса в HTTparty
Как передать параметры запроса и заголовки в методе post с помощью 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 )
Но это вызывает следующую ошибку. Как обрабатывать параметры строки запроса и заголовки с помощью 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'
Ответы
Ответ 1
Используйте строки для ваших хеш-ключей вместо символов.
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
)
Вероятно, только headers
вызывали проблему из-за ошибки, возникающей в net/http/header.rb:172
. Важная информация - это undefined method 'split' for :key:Symbol (NoMethodError)
Ошибка символа в 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>'
Ответ 2
Это был немного старый вопрос, но в последнее время у нас была такая же проблема, поэтому я пытаюсь приложить свои решения:
1) Ответ выше работает:
"headers": {
"Authorization" => "Bearer #{token}"
}
2) Альтернативно, другим решением является:
headers: {
Authorization: "Bearer #{token}"
}