77. HTTP客户端
Spring Boot提供了许多使用HTTP客户端的启动器。这一章解答使用它们相关的问题。
77.1 配置RestTemplate以使用代理
如33.1节描述的,你可以用使用了RestTemplateBuilder
的RestTemplateCustomizer
来构建一个定制的RestTemplate
。这是为了使用代理而创建一个RestTemplate
配置的推荐方式(approach)。
依赖于下层客户端请求工厂的代理配置的精确细节将被使用。下面的例子在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));
- }
- }