为什么运行我的Java应用程序时proxyHost/proxyPort不起作用?

mac*_*nir 5 java fiddler

我有一个与一些REST服务对话的Java应用程序,我想看看使用Fiddler的HTTP流量.

Fiddler充当localhost:8888的代理,因此以下Java VM选项应该配置java以使用此代理:

-Dhttp.proxyHost=localhost -Dhttp.proxyPort=8888
Run Code Online (Sandbox Code Playgroud)

但是,如果我在运行我要调试的java应用程序时传递这些参数,我看不到Fiddler中没有流量.

我编写了一个测试Java应用程序,它只使用HttpURLConnection执行HTTP GET.

如果我在从Eclipse调试它时指定上述命令行参数,我可以在fiddler中查看来自此应用程序的HTTP流量.

http.proxyHost/Port可能不适用于所有Java HTTP操作的原因是什么?

Ara*_*ram 4

您可以使用以下代码 (HttpClient 4.x) 告诉 HttpClient 遵循 JDK 系统参数。

public static final DefaultHttpClient HTTP = new DefaultHttpClient();
ProxySelectorRoutePlanner routePlanner = new ProxySelectorRoutePlanner(HTTP.getConnectionManager().getSchemeRegistry(),
ProxySelector.getDefault());
HTTP.setRoutePlanner(routePlanner);
Run Code Online (Sandbox Code Playgroud)