2011-02-24 64 views
0

我试图获得一个OAuth应用程序,但我失败了,因为API服务器不会跟我说话。不幸的是所使用的clj-apache-http不会告诉我是什么问题,我只得到这样的警告:如何调试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) 

好了,现在是不是我的帮助。作为响应中的第一个字符,有一个奇怪的字符I - 显然没有JSON。

我想要获得apaches HTTPClient的日志级别,现在可以达到DEBUG,但我不知道如何通过leiningen设置系统属性。有小费吗?

回答

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)) 
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 

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