发送带有俄文RestTemplate的xml



通过rest模板发送带有俄语字母的xml时。在post方法的输入,我得到xml '??????'

例如

我发送xml

String xml = 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data id="root">
<header>
<XML_NAME>UPDATE</XML_NAME>
</header>
<body xsi:type="update" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record id="" bid="143" number="3432ABS" surname="ПЕТРЕНКО" name="ИВАН" sname="ИВАНОВ">
</record>
</body>
</data>

发送方法
public <T> T sendPost(String url, String param, Object xml, Class<T> type) {
try {
HttpHeaders xml = new HttpHeaders();
xml.setContentType(MediaType.TEXT_XML);
HttpEntity httpEntity = new HttpEntity(entity, xml);
ResponseEntity<T> responseEntity = restTemplate.postForEntity(String.format("%s?%s", url, param), httpEntity, type);

return responseEntity;
}

在这个方法中

@POST
@Path("xml")
@Consumes(MediaType.TEXT_XML + "; charset=UTF-8")
@Produces(MediaType.APPLICATION_XML + "; charset=UTF-8")
public Response xml(
@QueryParam("id") BigDecimal id, String xml) throws IOException {}

我得到这个

String xml = 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data id="root">
<header>
<XML_NAME>UPDATE</XML_NAME>
</header>
<body xsi:type="update" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<record id="" bid="143" number="3432ABS" surname="???????" name="????" sname="??????">
</record>
</body>
</data>

尝试了@ consume的各种选项。没有什么帮助。但如果我上了我将发送相同的xml作为邮差,一切都会好的。

restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); 

帮助了我。