Spring RestTemplate 之中文乱码


由于RestTemplate的默认构造方法初始化的StringHttpMessageConverter的默认字符集是ISO-8859-1,所以导致RestTemplate请求的响应内容会出现中文乱码。

解决办法:

springboot中@Bean配置的时候要把StringHttpMessageConverter编码改成UTF8格式。:

@Bean    

public RestTemplate restTemplate() {

        RestTemplate restTemplate = new RestTemplate();

        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));        

        return restTemplate;

    }

 

applicationContext.xml配置中:

<bean id="requestFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">

        <property name="readTimeout" value="10000"/>

        <property name="connectTimeout" value="5000"/>

</bean>

<bean id="simpleRestTemplate" class="org.springframework.web.client.RestTemplate">

       <constructor-arg ref="requestFactory"/>

       <property name="messageConverters">

            <list>

                <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>

                <bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter"/>

                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>

                <bean class="org.springframework.http.converter.StringHttpMessageConverter">

                     <property name="supportedMediaTypes">

                            <list>

                                <value>text/plain;charset=UTF-8</value>

                            </list>

                     </property>

                </bean>

            </list>

        </property>

  </bean>


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM