我有一个问题,当服务器响应时,我无法将json格式的数据转换为UTF-8。我已经在spring配置xml中设置了MediaType
,但是似乎不起作用。这是我的服务器端代码来响应:
@RequestMapping(value = "/post", method = RequestMethod.POST)
public @ResponseBody String postData(@RequestBody ObjectNode request){
// do something with request
return response;
}
当服务器响应时,json格式的数据将包含unicode值。并在客户端配置中:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean id="formConverter" class="org.springframework.http.converter.FormHttpMessageConverter" />
<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg value="application" />
<constructor-arg value="json" />
<constructor-arg value="#{T(java.nio.charset.Charset).forName('UTF-8')}"/>
</bean>
</list>
</property>
</bean>
</list>
</property>
</bean>
这是我的客户端代码以请求数据,并且我使用postForObject方法:
@Autowired
private RestTemplate restTemplate;
public ObjectNode postObjectNode(ObjectNode request){
ObjectNode node = restTemplate.postForObject("http://localhost:8080/server/post", request, ObjectNode.class);
return node;
}
结果,包含Unicode的数据将转换为
????
。是由服务器引起的还是由restTemplate客户端引起的。请帮我。提前致谢... 最佳答案
如果处理程序方法为String
返回@ResponseBody
类型,则默认消息转换器为StringHttpMessageConverter
,则可以这样配置转换器
<mvc:annotation-driven >
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
关于java - 如何在json格式的restTemplate中将MediaType设置为UTF-8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18236975/