hea*_*ach 3 java apache authentication proxy http
我的应用程序向不同的目标发出https请求,现在我遇到了代理问题。
当客户端连接到目标服务器时,我从目标服务器获得407(需要代理身份验证)。需要说明的是:客户端已经到达www中的其他服务器。
我CloseableHttpClient一般如何构建以允许此代理身份验证?有人可以给我一个简短的示例,说明如何允许代理身份验证吗?
双代理身份验证(我的代理+外部代理)也可以工作吗?
请参阅此处的 “请求配置”部分。简而言之:
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!!!
Run Code Online (Sandbox Code Playgroud)
2.)然后像这样建立您的需求:
HttpGet httpget = new HttpGet("http://www.apache.org/");
RequestConfig requestConfig = RequestConfig.copy(defaultRequestConfig)
.setProxy(new HttpHost("myproxy", 8080))
.build();
httpget.setConfig(requestConfig);
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助。