2010-08-06 109 views
20

我想使用HttpURLConnection對服務器進行一些API調用。但請求都沒有成功,返回:Java:在發送之前顯示HttpURLConnection的請求

<error> 
    <http_status>400 Bad Request</http_status> 
    <message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message> 
</error> 

所以我要檢查「真正」的內容是什麼正被髮送到服務器。我真正的內容是指確切的HTTP請求。

任何想法,我可以看到這個?

編輯: 基於這裏我要澄清我的問題,第一個答案:我想避免使用外部程序,如HTTP嗅探器或任何東西,我希望有一個功能或屬性或任何持有我正在尋找的信息。

如果不是的話,沒有人知道是否可以手動重建該信息(例如,通過調用一些功能,如getRequestMethod()等)

我還挺常使這是面臨這樣的問題值得我努力構建這樣的功能。只需要知道如何:)

+0

可能的複製[如何啓用Java HttpURLConnection流量的線路日誌記錄?](http://stackoverflow.com/questions/1445919/how-to-enable-wire-logging-for-a-java-httpurlconnection-traffic) – Vadzim 2015-10-09 10:22:17

回答

14

您可以通過啓用與

-Djava.util.logging.config.file=logging.properties 

java.logging放在調試模式HttpURLConnection的,放在logging.properties(默認情況下在JRE_HOME \ LIB)以下屬性

sun.net.www.protocol.http.HttpURLConnection.level = ALL 
+0

我沒有真的知道我與上面提到的代碼行有什麼關係..我需要在哪裏運行這個? (使用eclipse作爲IDE) – Hirnhamster 2010-08-09 18:35:24

+2

您還需要在「運行配置 - 參數」選項卡中將「java.util.logging.ConsoleHandler.level = FINEST」 – Gili 2011-08-23 15:06:27

+1

@Hirnhamster設置爲您添加到VM參數部分。 – RealHowTo 2011-08-24 15:34:10

0

使用類似tcpdump,它可以轉儲您的計算機發出或接收的實際網絡數據包。

4

tcpdump可以工作,但很難讓它按照你想要的做。 NetCat更加用戶友好(這裏是項目頁面:http://netcat.sourceforge.net/ - 大多數Unix平臺已經包含了它)。

nc -l 9999 

這將監聽TCP端口9999上,當HTTP客戶端連接時,它會打印出申請的全文。

相關問題