关于springboot RestTemplate 发起get,post请求乱码问题

时间:2020-07-17
本文章向大家介绍关于springboot RestTemplate 发起get,post请求乱码问题,主要包括关于springboot RestTemplate 发起get,post请求乱码问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1原代码
RestTemplate 这个我是自己直接new出来的,底层代码显示 RestTemplate 的编码是 iso-8859-1,并非utf-8。

我在跟客户对接的时候,一度以为是因为header没设置 

header.setContentType(MediaType.APPLICATION_JSON_UTF8); 的这个原因,后面排查发现加了这个也不是。
而后又继续排查加这个:
header.set(HttpHeaders.ACCEPT_CHARSET, StandardCharsets.UTF_8.toString()); 还是不行。
最后查到可能是因为默认编码导致的。

故:创建一个修改默认编码的 RestTemplate
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.StandardCharsets;

/**
* 创建一个RestTemplate ,修改默认编码为 utf-8,框架默认为 iso-8859-1
*/

@Configuration
public class RestTemplateConfig {

@Bean
public RestTemplate initRestTemplate(){
RestTemplate restTemplate= new RestTemplate();
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));

return restTemplate;
}
}



在需要使用这个 RestTemplate 的时候,不要再去new了,而是

@Resource
private RestTemplate restTemplate;

或者----》
@Autowired
private RestTemplate restTemplate;

原文地址:https://www.cnblogs.com/woshuaile/p/13330694.html