【发布时间】:2016-04-28 08:21:54
【问题描述】:
我正在使用带有 ApacheConnection Provider 的 jersey 客户端。
Builder builder = RequestConfig.custom().setConnectTimeout(timeout);
List<Proxy> proxies = ProxyManager.getInstance().select(baseUrl.toURI());
if (useProxy) {
...
builder.setProxy(new HttpHost(proxyUri.getHost(), proxyUri.getPort()));
}
RequestConfig requestConfig = builder.build();
final ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ApacheClientProperties.REQUEST_CONFIG, requestConfig);
clientConfig.connectorProvider(new ApacheConnectorProvider());
client = ClientBuilder.newBuilder().withConfig(clientConfig).sslContext(getSSLContext()).build();
client.property(ClientProperties.CONNECT_TIMEOUT, 5000);
但是如何为代理认证添加用户名和密码呢?
似乎 apache 连接提供程序不使用标准的 java 代理选择器机制。
【问题讨论】:
-
你可以使用
DefaultProxyRoutePlanner:DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(new HttpHost(<your_proxy_host>, <port>));。然后设置客户的路线规划器:HttpClient client = HttpClients.custom().setRoutePlanner(routePlanner).build();. -
但是在哪里设置用户名和密码呢?
-
为此,看看这个答案:stackoverflow.com/a/36907908/1346996。
-
我认为无法将其应用于球衣场景。我只有requestConfig,似乎没有办法操作httpclient
-
你是对的。该链接不适用于您的需求。那就看看我的回答吧。