我们正在与第三方进行集成,该第三方以内容/类型 header 作为text/html发送xml。我们正计划使用Spring的RestTemplate将其映射到从xsds生成的类,但是RestTemplate找不到适合内容的转换器。第三方拒绝修复内容类型,因为它可能破坏其他伙伴的集成。
Spring的RestTemplate是否有办法强制其使用特定的转换器?
我们基本上只是在做以下事情:
RestTemplate restTemplate = new RestTemplate();
XmlClass xmlClass = restTemplate.getForObject("http://example.com/", XmlClass.class);
并得到以下异常:
最佳答案
我们实现的解决方案是将Jaxb2RootElementHttpMessageConverter
和MediaType.TEXT_HTML
添加到RestTemplate
HttpMessageConverters
。这不是理想的方法,因为它创建了一个冗余的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/