RestTemplate解决乱码问题

来源:互联网 发布:nginx error log 级别 编辑:程序博客网 时间:2024/06/05 09:34
spring是一个非常强大的东西,其中提供了一个工具类 RestTemplate 主要提供http服务, RestTempalate 字符串类型默认StringHttpMessageConverter做转码,而StringHttpMessageConverter的默认编码集是ISO8859-1,本工程编码是UTF-8 故发送到服务器端会存在中文乱码 。
把restTempalate 中 StringHttpMessageConverter 默认编码设置为UTF-8 具体:使用 restTempalate 构造函数 public RestTemplate(List> messageConverters) 传入 StringHttpMessageConverter 默认编码集是UTF-8 的转换器,
第一种 注入式:
  配置文件 :
 <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">       <constructor-arg index="0">       <list>       <bean id="byteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter"></bean>       <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">       <constructor-arg value="UTF-8"></constructor-arg>       </bean>       <bean id="resourceHttpMessageConverter" class="org.springframework.http.converter.ResourceHttpMessageConverter"></bean>       <bean id="sourceHttpMessageConverter" class="org.springframework.http.converter.xml.SourceHttpMessageConverter"></bean>       <bean id="allEncompassingFormHttpMessageConverter" class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"></bean>       <bean id="jaxb2RootElementHttpMessageConverter" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"></bean>       <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>       </list>       </constructor-arg>   </bean>


这样需要spring注入进来才可以,

第二种 非注入式:使用 设置Http请求头中设置  charset=UTF-8 修改默认编码,这样是提供new 的方法 设置编码
RestTemplate restTemplate = new RestTemplate();    StringHttpMessageConverter stringHttpMessageConverter=new StringHttpMessageConverter(Charset.forName("UTF-8"));  List<HttpMessageConverter<?>> list=new ArrayList<HttpMessageConverter<?>>();                                     list.add(stringHttpMessageConverter);                                                                            restTemplate.setMessageConverters(list);   

以上两种方式均可以搞定restTemplate带来的乱码问题,但是spring 单例的有点第二种没有凸显出来,所以选择第一种还是比较靠谱的。
原创粉丝点击