如何为 apache HttpClient 设置全局 http 代理设置
How to set global http proxy settings for apache HttpClient
在 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
系统 属性 似乎被忽略了,我想避免在 HttpClient
和 HttpRequest
周围创建一个完整的包装层 类 以在请求创建。
您可以使用 HttpClientBuilder。它将提取 http.proxyHost、http.proxyPort、http.nonProxyHosts.
的系统属性
HttpClientBuilder.create().useSystemProperties().build();
在 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
系统 属性 似乎被忽略了,我想避免在 HttpClient
和 HttpRequest
周围创建一个完整的包装层 类 以在请求创建。
您可以使用 HttpClientBuilder。它将提取 http.proxyHost、http.proxyPort、http.nonProxyHosts.
的系统属性HttpClientBuilder.create().useSystemProperties().build();