82. HTTP Client 端

Spring Boot 提供了许多与 HTTP Client 端一起使用的启动器。本节回答与使用它们有关的问题。

82.1 配置 RestTemplate 以使用代理

第 34.1 节“ RestTemplate 自定义”中所述,您可以将RestTemplateCustomizerRestTemplateBuilder结合使用来构建自定义的RestTemplate。建议使用此方法来创建配置为使用代理的RestTemplate

代理配置的确切详细信息取决于所使用的基础 Client 端请求工厂。以下示例将HttpComponentsClientRequestFactoryHttpClient配置为对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));
	}

}