HttpClientBuilder clientBuilder = HttpClientBuilder.create();
clientBuilder.useSystemProperties();
Properties props = System.getProperties();
String host = props.getProperty("http.proxyHost");
String port = props.getProperty("http.proxyPort");
String user = props.getProperty("http.proxyUser");
String password = props.getProperty("http.proxyPassword");
log.info("代理参数 host:{} port:{} user:{} password:{}", host, port, user, password);
if (StringUtils.isNotEmpty(host) && StringUtils.isNotEmpty(port)) {
clientBuilder.setProxy(new HttpHost(host, Integer.parseInt(port)));
log.info("使用了代理, 设置代理地址完成");
if (StringUtils.isNotEmpty(user) && StringUtils.isNotEmpty(password)) {
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope(host, Integer.parseInt(port)), new UsernamePasswordCredentials(user, password));
clientBuilder.setDefaultCredentialsProvider(credsProvider);
clientBuilder.setProxyAuthenticationStrategy(new ProxyAuthenticationStrategy());
log.info("使用了代理验证, 设置代理验证完成");
}
}
CloseableHttpClient build = clientBuilder.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setHttpClient(build);
restTemplate.setRequestFactory(factory);