2012-03-08 48 views
21

我目前正在編寫一個java應用程序,它使用HTTP POST將csv文件和其他一些參數上傳到服務器。服務器不斷向我的應用程序返回500個錯誤,我想在Fiddler中查看HTTP請求,以便我可以看到POST請求。
當我運行Fiddler時,它不會從Java應用程序捕獲任何HTTP通信。我寫了一個可以工作的GET請求,所以我知道我可以與服務器通信,但是沒有流量通過Fiddler顯示。提琴手未捕捉來自Java應用程序的HTTP請求

+0

是否有Java Servlet處理帖子? – 2012-03-08 16:03:16

+0

你確定它不是https流量嗎? – matcheek 2012-03-08 16:05:46

+0

沒有。我使用Apache的HTTPComponents從服務器上的API調用上傳方法。 – Andrew 2012-03-08 16:07:01

回答

18

您可以簡單地通過屬性

http.proxyHost設置爲本地主機http.proxyPort到 HTTP流量和 https.proxyHost/https.proxyPort用於HTTPS流量設定爲小提琴手HTTP代理您的應用程序。 對於HTTPS流量,您還必須將Fiddler根證書(可在選項對話框中導出)作爲可信證書添加到您的應用程序中。

您可以通過在你的代碼

System.setProperty("http.proxyHost", "localhost"); 
System.setProperty("http.proxyPort", "8888"); 

的開頭添加以下行這樣做,或通過命令行啓動Java的虛擬機時設置它們:

java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888 ... 
+0

我寫的開發服務器使用自簽名證書,所以我寫了類來信任所有證書。我已經設置了proxyHost和proxyPort屬性,但是我仍然沒有通過Fiddler看到應用程序的任何流量。 – Andrew 2012-03-08 16:33:19

+0

我可以通過在屬性中使用https並將本地主機更改爲127.0.0.1來獲得此功能。 – Andrew 2012-03-08 16:46:33

+1

我的更改使查看使用HttpURLConnection的HTTP GET請求成爲可能。 POST請求使用的是Apache的HttpComponents,我仍然無法看到此流量。 – Andrew 2012-03-08 16:55:45

1

隨着碼頭HTTP客戶端,以前的解決方案不起作用。 但是,以下工作:

HttpClient httpClient = new HttpClient(); 
httpClient.setProxy(new Address("127.0.0.1", 8888)); 
httpClient.start(); 
+0

你知道如何使其與HTTPS協同工作? – Arya 2016-09-29 22:29:44

相關問題