如何在Spring REST客户端中使用具有多个可能的根元素的XML

时间:2016-08-24 16:21:50

标签: spring web-services rest resttemplate xmlroot

在我的应用程序中,我必须使用第三方应用程序提供的服务。他们提供的响应总是200,他们会根据数据是否可用或发生错误来更改正文,如下所示

如果有数据那么

<products>
   <product></product>
   <product></product>
</products>

如果数据为空,则

<message> No record found </message>

如果某些验证失败则

<error>Invalid Id</error>

我正在使用RestTemplate.exchange来使用该服务,我的问题是,如果只有单一类型的根元素,那么我们将相应的类作为ParameterizedTypeReference传递,但是这里如何映射响应并解组它。

2 个答案:

答案 0 :(得分:0)

使用jaxb或jackson解组xml。

答案 1 :(得分:0)

这里要做的正确的事情是要求第三方更改其服务响应以获得根标记。然后响应对象看起来像这样:

<response>
<products>
   <product></product>
   <product></product>
</products>
<message> No record found </message>
<error>Invalid Id</error>
</response>

有了这个,你只需要关注response对象,你就可以检查各个子标签的存在。

其他选项让您可以通过传递String.class作为类型参考来进行交换。然后,您需要检查代码以查看返回的字符串响应是products还是message还是error

相关问题