Clojure: я использую http-kit для отправки запроса на сервер, но он не работает для меня

ПРИМЕЧАНИЕ. Я решил свою проблему. Однако потребовался ряд постепенных изменений. Если вы попали на эту страницу, не стесняйтесь проверить мой GitHub ниже, чтобы увидеть, как я сделал это приложение работает.


Я использую http-kit для отправки запроса в btc-china. Я хочу использовать их торговые API. Я могу сделать это просто отлично с Python, но по какой-то причине я продолжаю получать 401 с Clojure и http-Kit. Ниже приведен фрагмент кода, который может показать, что я не правильно использую http-kit. В дополнение к этому, вот github для моего полного кода, если вы хотите посмотреть на это: https://github.com/gilmaso/btc-trading Вот документы btc-china api: http://btcchina.org / апи-трейд-документация-ен

(def options {:timeout 2000 ; ms
          :query-params (sorted-map :tonce tonce
                                    :accesskey access-key
                                    :requestmethod request-method
                                    :id tonce
                                    :method method
                                    :params "")
          :headers {"Authorization" auth-string
                    "Json-Rpc-Tonce" tonce}})

(client/post (str "https://" base-url) options
      (fn [{:keys [status headers body error]}] ;; asynchronous handle response
        (if error
          (println "Failed, exception is " error)
          (println "Async HTTP GET: " status))))

2 ответа

Решение

Цитата из примера на сайте bttchina:

# The order of params is critical for calculating a correct hash

Хеш-карты clojure неупорядочены, и вы не можете использовать литерал хеш-карты clojure для ввода, если порядок значим

У меня была очень похожая проблема с bittamp api. Решение было заменить :query-params с :form-params, Затем параметры отправляются в теле. Я заметил, что в вашем API вы отправляете вручную, затем в теле. Похоже на использование :form-params может помочь и в вашем случае.

Другие вопросы по тегам