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: 8,345 · Posted: 2020-09-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...