RestTemplate을 이용해 getForObject를 하다보면 http call이 잘된다.
하지만..
그런데 URL 쿼리스트링에 Encoding을 하게되면 문제가 발생한다.
getForObject에 Url을 String 타입으로 주게되면 내부적으로 또 Encoding을 하는 듯하다.
그렇다면...?
방법은 URI 객체 사용이다.
이 밖에 ..
둘의 차이는 : , / 기호도 encoding 하냐 안하느냐의 차이로 생각하면 된다.
하지만..
http://foo.com?bar=car&fooUrl=http://paramater?go=go&key=keyfooUrl을 그대로 전송하면 문제가 발생할 수 있으니 인코딩이 필요하다.
그런데 URL 쿼리스트링에 Encoding을 하게되면 문제가 발생한다.
getForObject에 Url을 String 타입으로 주게되면 내부적으로 또 Encoding을 하는 듯하다.
그렇다면...?
방법은 URI 객체 사용이다.
// Spring 내장 Utils 사용 String encodeFooUrl = UriUtils.encode("http://paramater?go=go&key=key", "UTF-8") URI uri = new URI("http://foo.com?bar=car&fooUrl=" + encodeFooUrl);로 uri를 만든 후 getForObject로 get 전송을 보내면 된다.
이 밖에 ..
MultiValueMapUriComponents를 이용해 Uri 를 만들 수 있다.params = new LinkedMultiValueMap<>(); 와 UriComponents uri = UriComponentsBuilder.fromHttpUrl("http://sample.host").queryParams(params).build().encode("UTF-8"); uri.toUri();
둘의 차이는 : , / 기호도 encoding 하냐 안하느냐의 차이로 생각하면 된다.
'Java > Spring' 카테고리의 다른 글
[Spring] Stream 형태로 Response 응답 주기 (feat. MyBatis, Observer) (3) | 2017.11.27 |
---|---|
[Spring] 기본 생성자가 없는 객체 바인딩시키기 (0) | 2016.08.30 |
브라우저에서 PUT, DELETE method 요청하기 (0) | 2016.07.21 |
[SpringBoot] Address already in use: JVM_Bind (0) | 2016.07.21 |
Spring Endpoint Health 설정 (0) | 2016.07.19 |