遠程調用第三方接口響應體中文亂碼問題解決
背景:基於SpringCloud、SpringBoot的項目,使用RestTemplate進行遠程調用第三方接口
問題:使用restTemplate調用第三方接口(restTemplate.postForEntity(),注意是post請求),接收到的json格式響應體中文出現亂碼,但是第三方接口使用postman調用是正常的,不會出現亂碼問題
原因:Spring源碼默認使用ISO編碼
解決:代碼如下:
List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
//移出默認編碼StringHttpMessageConverter
converterList.remove(1);
HttpMessageConverter<?> converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
//將新的編碼格式放入原來的位置,注意convert順序錯誤會導致失敗
converterList.add(1, converter);
restTemplate.setMessageConverters(converterList);
將該代碼放在使用restTemplate之前就行了。
原文地址:https://blog.csdn.net/xiaojin21cen/article/details/84835143