1. 개요

이 짧은 사용방법(예제)에서는 RestTemplate을 사용하여 프록시에 요청을 보내는 방법을 살펴 보겠습니다 .

2. 의존성

먼저 RestTemplateCustomizerHttpClient 클래스를 사용하여 프록시에 연결합니다.

이 클래스를 사용하려면 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를 사용하여 동일한 작업을 수행하는 방법을 배웠습니다.이 방법 설명서 에 따라 권장되는 방법 입니다.

항상 그렇듯이 코드 샘플은 GitHub에서 사용할 수 있습니다 .