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.csdn.net/luccs624061082/article/details/40980623