Spring Boot 修改 RestTemplate 默认编码格式
Spring Boot 大约 1163 字描述
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));
}
阅读 4293 · 发布于 2020-09-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
HTML 中 script 标签中的 async 和 defer 的区别阅读 1110
-
算法:冒泡排序阅读 388
-
Lombok MapStruct cannot find symbol阅读 68
-
只有一部分接口跨域问题阅读 975
-
Elasticsearch 9200 端口和 9300 端口区别阅读 2812
-
Spring 接口类型 getBeanNamesForType 获取实际类型的流程阅读 472
-
软考-系统架构设计师:政府信息化与电子政务阅读 1257
-
PHP编译安装redis扩展阅读 1211
-
为什么 ArrayList 父类中已经实现了 List 接口,自身也实现了 List 接口阅读 353
-
Linux jobs fg bg disown阅读 1645