可关闭的HttpClient代理身份验证

5
我的应用程序向不同的目标进行https请求,现在我遇到了代理问题。
当客户端连接到目标时,我从目标服务器获得 407(代理身份验证要求)错误代码。需要明确的是:客户端已经可以连接www中的其他服务器。
一般地说,我如何构建 CloseableHttpClient 以允许此代理身份验证?有人能给我一个简短的示例来允许代理身份验证吗?双重代理认证(我的代理+外部代理)也可以工作吗?
1个回答

8
请参阅“请求配置”部分此处。简而言之:
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);

希望这能帮到有所需的人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接