3

在 Apache Commons 4.3 及更高版本中,您需要在HttpRequest级别上注入您的 HTTP 代理设置 - 但不是在全局范围内,在HttpClient本身:

RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
HttpGet httpget = new HttpGet("http://url");
httpget.setConfig(config);
...

httpclient.execute(target, httpget);

问题是,在一些更高级别的库中,配置是通过传递一个定制的HttpClient实例来进行的。但这并不能让您访问HttpRequest内置的 API 代码。

例如,在 Jolokia(一个 JMX REST 桥)中,您可以这样创建客户端:

J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia", httpClient);

在这种情况下有没有办法指定 HTTP 代理?系统http.proxyHost属性似乎被忽略了,我想避免创建一个完整的包装类层HttpClientHttpRequest在请求创建期间注入设置。

4

1 回答 1

7

您可以使用 HttpClientBuilder。它将拉入 http.proxyHost、http.proxyPort、http.nonProxyHosts 的系统属性。

HttpClientBuilder.create().useSystemProperties().build();

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html

于 2017-01-23T16:32:10.697 回答