在我的应用程序中,我必须使用第三方应用程序提供的服务。他们提供的响应总是200,他们会根据数据是否可用或发生错误来更改正文,如下所示
如果有数据那么
<products>
<product></product>
<product></product>
</products>
如果数据为空,则
<message> No record found </message>
如果某些验证失败则
<error>Invalid Id</error>
我正在使用RestTemplate.exchange
来使用该服务,我的问题是,如果只有单一类型的根元素,那么我们将相应的类作为ParameterizedTypeReference
传递,但是这里如何映射响应并解组它。
答案 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