强制Spring RestTemplate使用XmlConverter

我们正在与第三方进行集成,该第三方发送的XML的Content-Type标头为text /

html。我们正计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但是RestTemplate无法找到合适的转换器用于内容。第三方拒绝修复内容类型,因为它可能破坏其他伙伴的集成。

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

RestTemplate restTemplate = new RestTemplate();

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

并得到以下异常:

org.springframework.web.client.RestClientException:无法提取响应:在org.springframework.web.client找不到响应类型为[XmlClass]和内容类型为[text

/ html; charset = ISO-8859-1]的HttpMessageConverter。

HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:84)

回答:

我们实现的解决方案是增加一个Jaxb2RootElementHttpMessageConverterMediaType.TEXT_HTMLRestTemplate

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);

以上是 强制Spring RestTemplate使用XmlConverter 的全部内容, 来源链接: utcz.com/qa/419469.html

回到顶部