我们正在与第三方进行整合,第三方发送xml的内容类型标头为text/html。我们计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但RestTemplate无法找到适合内容使用的转换器。第三方拒绝修复内容类型,因为它可能会破坏其他合作伙伴的整合。强制使用XmlConverter的Spring RestTemplate
Spring的RestTemplate有没有办法强制它使用特定的转换器? 我们基本上只是在做以下几点:
RestTemplate restTemplate = new RestTemplate();
XmlClass xmlClass = restTemplate.getForObject("http://example.com/", XmlClass.class);
,并获得以下异常:
org.springframework.web.client.RestClientException:无法提取 响应:没有合适的HttpMessageConverter发现响应键入 [XmlClass]和内容类型[text/html的;字符集= ISO-8859-1]在 org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:84)
我试着用拦截器更改accept头,以鼓励他们使用正确的头,但那不起作用。 – Nathanial
当然,我也会尝试。我的意思是在响应回来之后摆弄* response *头部。 – artbristol
我们通过将附加消息转换器添加到接受MediaType.TEXT_HTML的restTemplate来解决问题。这是不理想的,因为它创建了一个冗余的jaxb消息转换器,但它的工作原理 - 我试图在答案中添加代码,但它不会让我,因为我没有代表。 – Nathanial