1. 개요
이 짧은 사용방법(예제)에서는 RestTemplate을 사용하여 프록시에 요청을 보내는 방법을 살펴 보겠습니다 .
2. 의존성
먼저 RestTemplateCustomizer 는 HttpClient 클래스를 사용하여 프록시에 연결합니다.
이 클래스를 사용하려면 Maven pom.xml 파일 에 Apache의 httpcore 의존성 을 추가해야 합니다.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
또는 Gradle build.gradle 파일 :
compile 'org.apache.httpcomponents:httpcore:4.4.13'
3. SimpleClientHttpRequestFactory 사용
RestTemplate을 사용하여 프록시에 요청을 보내는 것은 매우 간단합니다. RestTemplate 객체를 만들기 전에 SimpleClientHttpRequestFactory 에서 setProxy (java.net.Proxy) 를 호출하기 만하면 됩니다.
먼저 SimpleClientHttpRequestFactory 구성으로 시작합니다 .
Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress(PROXY_SERVER_HOST, PROXY_SERVER_PORT));
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setProxy(proxy);
그런 다음 요청 팩토리 인스턴스를 RestTemplate 생성자 에 전달합니다 .
RestTemplate restTemplate = new RestTemplate(requestFactory);
마지막으로 RestTemplate 을 빌드하고 나면이 를 사용하여 프록시 요청을 할 수 있습니다.
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://httpbin.org/get", String.class);
assertThat(responseEntity.getStatusCode(), is(equalTo(HttpStatus.OK)));
4. RestTemplateCustomizer 사용
또 다른 접근 방식은 RestTemplateBuilder 와 함께 RestTemplateCustomizer 를 사용하여 맞춤형 RestTemplate 을 구축하는 것 입니다.
ProxyCustomizer 정의를 시작 하겠습니다 .
class ProxyCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
HttpHost proxy = new HttpHost(PROXY_SERVER_HOST, PROXY_SERVER_PORT);
HttpClient httpClient = HttpClientBuilder.create()
.setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {
@Override
public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context) throws HttpException {
return super.determineProxy(target, request, context);
}
})
.build();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
}
그 후 사용자 정의 된 RestTemplate 을 빌드합니다 .
RestTemplate restTemplate = new RestTemplateBuilder(new ProxyCustomizer()).build();
마지막으로 RestTemplate 을 사용하여 프록시를 통해 먼저 전달되는 요청을 만듭니다.
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://httpbin.org/get", String.class);
assertThat(responseEntity.getStatusCode(), is(equalTo(HttpStatus.OK)));
5. 결론
이 짧은 사용방법(예제)에서는 RestTemplate을 사용하여 프록시에 요청을 보내는 두 가지 방법을 살펴 보았습니다 .
먼저 SimpleClientHttpRequestFactory를 사용하여 빌드 된 RestTemplate을 통해 요청을 보내는 방법을 배웠습니다 . 그런 다음 RestTemplateCustomizer를 사용하여 동일한 작업을 수행하는 방법을 배웠습니다.이 방법 은 설명서 에 따라 권장되는 방법 입니다.