Study/Java
Spring RestTemplate으로 요청 시 302 redirect 된 페이지의 response 결과받기
Bluesky_
2019. 8. 9. 15:28
반응형
HttpStatus가 302 인 경우 브라우저에서는 해당 페이지로 리다이렉트 되어 화면이 처리된다.
restTemplate으로 요청한 응답 결과의 HttpStatus가 302 인 경우는 해당 페이지로 리다이렉트 되지 않고 응답 결과만 반환받는다.
하지만 redirect된 결과로 응답을 받을 수 있는 기능이 있다.
restTemplate에서 requestFactory를 apacheml httpclient를 사용하는 경우 지원되는 기능이다.
다음처럼 HttpClientBuilder에 redirectStrategy 설정을 하면 요청된 결과가 302인 경우 해당 페이지로 리다이렉트 된 결과를 반환해준다.
RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
HttpClient httpClient = HttpClientBuilder.create()
.setRedirectStrategy(new LaxRedirectStrategy())
.build();
factory.setHttpClient(httpClient);
restTemplate.setRequestFactory(factory);
okHttp를 requestFactory로 사용하는 경우 redirect 처리가 기본 설정이다.
302 redirect를 직접 처리할지 아니면 라이브러리에서 제공하는 설정을 통해 처리를 할지는 개발하면서 상황에 따라 결정해야 한다.
반응형