Spring Boot 修改 RestTemplate 默认编码格式
Spring Boot RestTemplate About 1,146 words描述
Spring Boot中提供的HTTP请求工具类RestTemplate默认的编码格式为:ISO-8859-1。
// A default constructor that uses {@code "ISO-8859-1"} as the default charset.
// @see #StringHttpMessageConverter(Charset)
public StringHttpMessageConverter() {
    this(DEFAULT_CHARSET);
}
更改配置
更改RestTemplate信息转换器中的StringHttpMessageConverter为对应编码的转换器。
@Configuration
public class MyBean {
    @Bean
    public RestTemplate restTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(Charset.forName("GBK"))); // StandardCharsets.UTF_8
        return restTemplate;
    }
}
原理
上述设置参数中的1,对应StringHttpMessageConverter,可查看RestTemplate构造方法获悉,转换器List中索引为1的转换器正好是StringHttpMessageConverter。默认的StringHttpMessageConverter构造为ISO-8859-1。故使用指定编码格式的StringHttpMessageConverter代替即可。
private final List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
public RestTemplate() {
    this.messageConverters.add(new ByteArrayHttpMessageConverter());
    this.messageConverters.add(new StringHttpMessageConverter());
    this.messageConverters.add(new ResourceHttpMessageConverter(false));
}
                Views: 9,910 · Posted: 2020-09-11
            
            ————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
 
        Loading...