我该如何调试clj-apache-http?

时间:2011-02-24 20:44:42

标签: clojure oauth leiningen

我正在尝试启动OAuth应用程序,但是我失败了,因为API服务器不会跟我说话。不幸的是,使用过的clj-apache-http不会告诉我这是什么问题,我只收到这个警告:

WARNUNG: Authentication error: Unable to respond to any of these challenges: {oauth=WWW-Authenticate: OAuth realm="http%3A%2F%2FSERVERNAME"}
Exception in thread "Thread-1" java.lang.RuntimeException: java.lang.Exception: JSON error (unexpected character): I (example.clj:1)
        at clojure.lang.AFn.run(AFn.java:28)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.Exception: JSON error (unexpected character): I (example.clj:1)
        at clojure.lang.Compiler.eval(Compiler.java:5440)
        at clojure.lang.Compiler.load(Compiler.java:5857)
        at clojure.lang.RT.loadResourceScript(RT.java:340)
        at clojure.lang.RT.loadResourceScript(RT.java:331)
        at clojure.lang.RT.load(RT.java:409)
        at clojure.lang.RT.load(RT.java:381)
        at clojure.core$load$fn__4511.invoke(core.clj:4905)
        at clojure.core$load.doInvoke(core.clj:4904)
        at clojure.lang.RestFn.invoke(RestFn.java:409)
        at clojure.core$load_one.invoke(core.clj:4729)

好的,现在这对我没有帮助。有一个奇怪的角色作为回复中的第一个 - 显然没有JSON。

我想现在将apache HTTPClient的日志级别提升到DEBUG,但我不知道如何通过 leiningen 设置系统属性。有什么提示吗?

2 个答案:

答案 0 :(得分:1)

这是通过本地调试代理获取 clj-apache-http 的所有请求的方法:

(require ['com.twinql.clojure.http :as 'http])

(:content 
  (http/get (java.net.URI. "http://yourhost.com")
    :parameters (http/map->params {
      :default-proxy (http/http-host
        :host "127.0.0.1" 
        :port 8765)}) :as :string))

答案 1 :(得分:0)

或者,您可以将其添加到log4j.properties:

log4j.logger.httpclient.wire.header=DEBUG
log4j.logger.httpclient.wire.content=DEBUG
log4j.logger.org.apache.commons.httpclient=DEBUG
log4j.logger.org.apache.http=DEBUG
log4j.logger.org.apache.http.wire=DEBUG

将所有通信转储到您的日志文件中。这很有用,不想更改发出请求的代码。