0

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

如果有数据,那么

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

如果数据为空,则

<message> No record found </message>

如果某些验证失败,那么

<error>Invalid Id</error>

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

4

2 回答 2

0

使用 jaxb 或 jackson 解组 xml。

于 2016-08-25T04:39:40.680 回答
0

这里正确的做法是要求第三方将他们的服务响应更改为具有根标签。响应对象将如下所示:

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

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

使这项工作为您工作的其他选择是通过String.class作为类型引用传递来进行交换。然后您需要检查您的代码以查看返回的字符串响应是否为productsormessageerror

于 2016-08-30T18:37:52.677 回答