Clojure:我正在使用http-kit向服务器发送请求,但它对我来说效果不佳

时间:2013-12-09 05:42:49

标签: clojure http-kit

注意:我解决了我的问题。但是,它需要进行一些增量更改。如果你碰巧在这个页面上,请随时查看我的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))))

2 个答案:

答案 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也可能对您的情况有所帮助。