gpt4 book ai didi

java - 强制 Spring RestTemplate 使用 XmlConverter

转载 作者:IT老高 更新时间:2023-10-28 13:58:51 26 4
gpt4 key购买 nike

我们正在与第三方集成,该第三方发送带有内容类型 header 为 text/html 的 xml。我们计划使用 Spring 的 RestTemplate 将其映射到我们从 xsds 生成的类,但 RestTemplate 无法找到合适的转换器来用于内容。第三方拒绝修复内容类型,因为它可能会破坏其他合作伙伴的集成。

Spring 的 RestTemplate 有没有办法强制它使用特定的转换器?我们基本上只是在做以下事情:

RestTemplate restTemplate = new RestTemplate();
XmlClass xmlClass = restTemplate.getForObject("http://example.com/", XmlClass.class);

并得到以下异常:

org.springframework.web.client.RestClientException: Could not extractresponse: no suitable HttpMessageConverter found for response type[XmlClass] and content type [text/html;charset=ISO-8859-1] atorg.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:84)

最佳答案

我们实现的解决方案是在 RestTemplate HttpMessageConverters 中添加一个带有 MediaType.TEXT_HTMLJaxb2RootElementHttpMessageConverter。这并不理想,因为它创建了一个冗余的 jaxb 消息转换器,但它可以工作。

RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter();
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(MediaType.TEXT_HTML);
jaxbMessageConverter.setSupportedMediaTypes(mediaTypes);
messageConverters.add(jaxbMessageConverter);
restTemplate.setMessageConverters(messageConverters);

关于java - 强制 Spring RestTemplate 使用 XmlConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com