我responseEntity喜欢这个:
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
requestHeaders.setContentType(MediaType.valueOf("text/plain;charset=UTF-8"));
HttpEntity requestEntity = new HttpEntity(jsonQuery, requestHeaders);
ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
//Not in UTF-8!!
logger.debug("result: " + responseEntity.getBody());
Run Code Online (Sandbox Code Playgroud)
但它没有编码UTF-8并产生这样的字符:Soci?.是否有可能UTF-8在restTemplate中以某种方式进行编码或添加编码?
requestHeaders .add("Content-Type", "text/html; charset=utf-8");
Run Code Online (Sandbox Code Playgroud)
解决方案是在bean 中添加一个StringHttpMessageConverterwith ,如下所示:utf-8restTemplate
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
.add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
return restTemplate;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10363 次 |
| 最近记录: |