mem*_*und 5 java spring spring-rest
我正在使用spring RestTemplate与xmlwebservice后端进行通信,如下所示:
ResponseEntity<MainDTO> dto = restTemplate.postForObject(url, postData, MainDTO.class);
Run Code Online (Sandbox Code Playgroud)
问题:后端可能会响应MainDTO正常数据或ErrorDTO出现故障.但两者兼而有之HTTP 200.
但我不知道之前会有哪些物体回来!无论如何restTemplate要求我class之前通过这种类型.
那么,我怎么能将xml解析为普通或错误bean?
旁注:我对webservice后端没有任何控制权.
如您所料,问题在于后端应使用HTTP错误代码向您返回错误,这就是它们的用途。
但是正如您所说,您无法控制后端,因此您可以做的就是首先将其作为字符串获取
ResponseEntity<String> dto = restTemplate.postForObject(url, postData, String.class);
Run Code Online (Sandbox Code Playgroud)
然后,您可以尝试MainDTO使用try / catch尝试将Jackson或Gson 字符串响应解析为a (无论项目中有什么,都应该这样做,因为我相信Spring的RestTemplate在内部使用其中之一),如果失败,然后您尝试使用来解析它ErrorDto。
更新资料
哦,我刚才读,这是一个XML服务,而不是一个JSON时,上面的方法仍然有效,但不是使用Jackson或者Gson,你可以使用SimpleXML(http://simple.sourceforge.net/download/stream/doc/tutorial/ tutorial.php#deserialize),它允许您以“简单”的方式反序列化XML,您只需要用模型的注释对模型进行注释,这些注释将在其教程和示例中进行介绍。
这个Spring的示例(http://spring.io/guides/gs/using-rest-xml-android/)也可以提供有关如何使用的见解SimpleXML。
| 归档时间: |
|
| 查看次数: |
7454 次 |
| 最近记录: |