Spring Boot修改RestTemplate默认编码格式

Spring Boot大约 1162 字

描述

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));
}
阅读 64 · 发布于 2020-09-11

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批