注意:我解决了我的问题。但是,它需要进行一些增量更改。如果你碰巧在这个页面上,请随时查看我的github,看看我是如何使这个应用程序工作的。
我正在使用http-kit向btc-china发布请求。我想用他们的交易api。我能用python做到这一点很好,但出于某种原因,我一直在用clojure和http-kit获得401s。我发布了一个代码snippit,可能表明我没有正确使用http-kit。除此之外,如果你想看一下,这里是我的完整代码的github:https://github.com/gilmaso/btc-trading 以下是btc-china api文档:http://btcchina.org/api-trade-documentation-en
(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))))
答案 0 :(得分:4)
引用example on the bttchina site:
# The order of params is critical for calculating a correct hash
clojure哈希映射是无序的,如果顺序很重要,则不能使用clojure哈希映射文字来提供输入
答案 1 :(得分:1)
我遇到了与bitstamp api非常类似的问题。解决方案是将:query-params
替换为:form-params
。然后参数在体内发送。我注意到你在api中手动发送然后在体内。看起来使用:form-params
也可能对您的情况有所帮助。