반응형
restTemplate을 이용해서 response body를 String.class로 변환했을 때 한글이 깨지는 현상이 있었다.
이상하게도 여태까지 이런적은 없었는데.. 특정한 프로젝트에서만 발생하였음.(너무오래되서 전역적인 설정은 기억이안남...)
일단 급하게 처리한 방법은 아래와 같다.
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
restTemplate.getForObject(url, String.class);
restTemplate이 가지고있는 messageConverter List의 맨 앞에 StringHttpMessageConverter를 넣어주는 거다.
(restTemplate이 기존에 갖고있는 StringHttpMessageConverter를 가져와서 바꿔줘도 될듯한..?)
Message Conversion
그렇다면, HttpMessageConverter란 무엇일까.
HttpMessageConverter란 인터페이스이며, 구현한 구현체는 ByteArrayHttpMessageConverter, ResourceHttpMessageConverter, StringHttpMessageConverter가 있다.
HttpMEssageConverter는 HTTP요청 및 응답의 body를 InputStream
과 outputStream
을 통해 읽고 쓰는 역할을 한다.
즉, StringHttpMessageConverter는 HTTP의 응답을 String(문자열)로 변환해주는 역할을 한다.
** 확인해본 결과, restTemplate이 기본적으로 갖고 있는 messageConverter는 6가지가 있는데, 기존에 갖고 있던 StringHttpMessageConverter의 default Charset이 ISO-8859-1로 되어있었다. 아마 초기에 UTF-8로 셋팅할 수 있는 방법이 있다면 위의 방법은 건너 뛸 수 있을 것 같다.
반응형
'그 외 ... (정리해야함) > 꿀팁' 카테고리의 다른 글
openssl을 이용한 인증서 포맷 변경 (0) | 2020.03.10 |
---|---|
openssl을 이용한 개인키,공개키 생성(RSA) (2) | 2020.03.10 |
Springboot에서 H2데이터베이스 콘솔 설정하기 (0) | 2019.08.07 |
[JAVA] Stream을 이용한 이중 for문 (0) | 2019.08.05 |
윈도우 PC 키보드 MAC에서 사용하는 법 (0) | 2019.06.30 |