解决Spring RestTemplate请求相应内容中文乱码问题
参考:https://www.cnblogs.com/BillyYoung/p/10737081.html
1、原因
RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现中文乱码。
2、解决方法
Springboot中@Bean配置的时候要把StringHttpMessageConverter编码改成UTF8格式。如下
/**
* @date 2021-06-15
* restTemplate 配置文件
*/
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate getRestTemplateBean() {
RestTemplate restTemplate = new RestTemplate();
SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
//处理请求返回中文乱码
restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
//设置请求超时时间
int timeOut = 10*1000;
simpleClientHttpRequestFactory.setConnectTimeout(timeOut);
simpleClientHttpRequestFactory.setReadTimeout(timeOut);
restTemplate.setRequestFactory(simpleClientHttpRequestFactory);
return restTemplate;
}
}