@Bean
public ClientHttpRequestFactory requestFactory(CloseableHttpClient httpClient) {
return new HttpComponentsClientHttpRequestFactory(httpClient);
}
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory requestFactory) {
// 创建核心类
RestTemplate restTemplate = new RestTemplate(requestFactory);
List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
// 从list获得指定类型的对象,从而调用对应的方法进行特定的赋值。
for (HttpMessageConverter<?> messageConverter : messageConverters) {
// 判断当前的消息转换器是否是String消息转换器
if(messageConverter instanceof StringHttpMessageConverter) {
StringHttpMessageConverter stringHttpMessageConverter = (StringHttpMessageConverter) messageConverter;
stringHttpMessageConverter.setDefaultCharset(Charset.forName("UTF-8"));
}
}
return restTemplate;
}
在 idea 中检查到实现类中,String 类型消息转换器。
默认检查到默认编码格式为 “ISO_8859_1”,然而并不支持中文,所以我们在开头代码中设置编码格式为喜闻乐见的 “UTF-8” 。