75. 个 HTTPClient 端

75.1 配置 RestTemplate 使用代理

第 33.1 节“ RestTemplate 定制”中所述,RestTemplateCustomizer可以与RestTemplateBuilder一起使用以构建自定义的RestTemplate。建议使用此方法来创建配置为使用代理的RestTemplate

代理配置的确切详细信息取决于所使用的基础 Client 端请求工厂。这是使用HttpClient配置HttpComponentsClientRequestFactory的示例,该HttpClient对除192.168.0.5之外的所有主机使用代理。

static class ProxyCustomizer implements RestTemplateCustomizer {

    @Override
    public void customize(RestTemplate restTemplate) {
        HttpHost proxy = new HttpHost("proxy.example.com");
        HttpClient httpClient = HttpClientBuilder.create()
                .setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {

                    @Override
                    public HttpHost determineProxy(HttpHost target,
                            HttpRequest request, HttpContext context)
                                    throws HttpException {
                        if (target.getHostName().equals("192.168.0.5")) {
                            return null;
                        }
                        return super.determineProxy(target, request, context);
                    }

                }).build();
        restTemplate.setRequestFactory(
                new HttpComponentsClientHttpRequestFactory(httpClient));
    }

}