在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
实例来进行的。但这并不能让您访问 API 代码中内置的HttpRequest
。
例如,在Jolokia(JMX REST桥)中,您可以像这样创建客户端:
J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia", httpClient);
在这种情况下,有没有办法指定HTTP代理?http.proxyHost
system 属性似乎被忽略了,我想避免围绕HttpClient
创建完整的包装类层,HttpRequest
在请求创建期间注入设置。
您可以使用 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