提问人:Egor Tverkov 提问时间:7/19/2022 更新时间:7/19/2022 访问量:156
发送带有俄语字母的 xml RestTemplate
Send xml with russian letters RestTemplate
问:
通过 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>
用@Consumes尝试了各种选项。没有任何帮助。 但是如果我在 post endpoint 我将发送与 postman 相同的 xml,一切都会好起来的。
答:
1赞
Egor Tverkov
7/19/2022
#1
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
帮助了我。
评论