2012-03-08 25 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

相关问题