2011-02-24 65 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 

這將轉儲所有通信到您的日誌文件。這很有用,不希望更改發出請求的代碼。