RestTemplate的Http请求机制一直在用,但从没有深究过,今天使用它的postForEntity方法发送xml片段时(动态创建栅格图层),出现了乱码问题。
和安娜讨论,发现以下情况:
1、通过HttpHeaders的setContentType(“applicaiton/json;charset=UTF-8”)方法,约定字符。它是按照Http协议的要求,向服务器声明发送的json字符集的。
2、在这样的设置情况下,用RestTemplate时可能还会发生乱码,其原因是RestTemplate有一系列HTTP消息转换器(HttpMessageConverter)。这个消息转换器集合中第1个消息转换器StringHttpMessageConverter,它默认字符集是“ISO-8859-1”。所以当我们发送的字符流是UTF-8时,就会出乱码。
所以处理办法是通过restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)),改变一下StringHttpMessageConverter的字符集。
网上参考:http://blog.youkuaiyun.com/luccs624061082/article/details/40980623
本文探讨了使用Spring的RestTemplate发送XML时遇到的乱码问题,并深入分析了解决方案。文章指出,即使设置了正确的字符集,由于RestTemplate内部使用的默认字符集为ISO-8859-1,仍可能导致乱码。最终通过修改StringHttpMessageConverter的字符集为UTF-8解决了问题。

1487

被折叠的 条评论
为什么被折叠?



