解决RestTemplate模板使用post请求响应数据乱码的问题
一、RestTemplate初始化的时候给我加了很多东西比如说:编码格式
二、查看 StringHttpMessageConverter默认编码
在这里我们可以看到默认编码是ISO_8859_1
三、通过构造函数进行初始化或者注解的方式 将UTF-8的编码格式加入到RestTemplate中
private static final RestTemplate restTemplate = new RestTemplate();
/**
* 设置StringHttpMessageConverter ->utf-8
*
* @param restTemplate
*/
private static void setUtf8(RestTemplate restTemplate) {
List<HttpMessageConverter<?>> converterList = restTemplate.getMessageConverters();
if (!CollectionUtils.isEmpty(converterList)) {
HttpMessageConverter<?> converterTarget = null;
for (HttpMessageConverter<?> item : converterList) {
if (item.getClass() == StringHttpMessageConverter.class) {
converterTarget = item;
break;
}
}
if (converterTarget != null) {
converterList.remove(converterTarget);
HttpMessageConverter<?> converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
converterList.add(converter);
}
}
}
//通过注解初始化
@PostConstruct
public void init() {
setUtf8(restTemplate);
}