RestTemplate配置代理

2022-03-10 Views RestTemplate | Java157字1 min read
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);
EOF