我的应用程序对不同的目标执行https请求,现在我遇到了代理问题。
当客户端连接到目标时,我从目标服务器获得407(需要代理身份验证)。需要说明的是:客户端已经到达www中的其他服务器。
我如何构建CloseableHttpClient
以便允许此代理身份验证?有人能给我一个简短的示例如何允许代理身份验证吗?
双代理身份验证(我的代理+外部代理)是否也有效?
答案 0 :(得分:4)
参见"请求配置"第here节。简而言之:
1。)建立你的客户:
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setSocketTimeout(5000)
.setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
.setStaleConnectionCheckEnabled(true)
.build();
CloseableHttpClient httpclient = HttpClients.custom()
.(settingXY)
.setDefaultCookieStore(defaultCookieStore)
.setDefaultCredentialsProvider(defaultCredentialsProvider)
.setDefaultRequestConfig(defaultRequestConfig)
.setDefaultRequestConfig(defaultRequestConfig)
.build();
//You dont need to specify proxy here!!!
2。)然后建立你的需求:
HttpGet httpget = new HttpGet("http://www.apache.org/");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig)
.setProxy(new HttpHost("myproxy", 8080))
.build();
httpget.setConfig(requestConfig);
3。)然后
defaultCredentialsProvider.setCredentials(new AuthScope(proxy.getHostName(), proxy.getPort()), proxyCredentials);
HttpGet httpget = new HttpGet("http://www.apache.org/");
HttpUriRequest request= httpget;
CloseableHttpResponse response = httpclient.execute(request, context);
希望这有助于某人。