其他分享
首页 > 其他分享> > 如何使用RestTemplate与多种响应类型?

如何使用RestTemplate与多种响应类型?

作者:互联网

我正在使用spring RestTemplate与xml webservice后端进行通信,如下所示:

ResponseEntity<MainDTO> dto = restTemplate.postForObject(url, postData, MainDTO.class);

问题:后端可以使用MainDTO响应正常数据,也可以使用ErrorDTO响应失败.但是两者都使用HTTP 200.

但我不知道之前会有哪些物体回来!无论如何restTemplate要求我之前传递类类型.

那么,我怎么能将xml解析为普通或错误bean?

旁注:我对webservice后端没有任何控制权.

解决方法:

正如您所想,问题是后端应该使用HTTP错误代码返回错误,这就是它们的用途.

但正如你所说,你无法控制后端,所以你能做的就是先把它作为一个字符串

ResponseEntity<String> dto = restTemplate.postForObject(url, postData, String.class);

然后你可以尝试用Jackson或Gson解析字符串响应作为MainDTO(无论你在项目中有什么,你应该,因为我相信Spring的RestTemplate在内部使用它们)和try / catch如果它失败了,然后你尝试用你的ErrorDto解析它.

更新

哦,我刚刚读到它是一个XML服务,而不是JSON,上面的方法仍然有效,但是你可以使用SimpleXML(http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#deserialize),它允许你以“简单”的方式反序列化XML,而不是使用Jackson或Gson.方式,您只需要使用他们的教程和示例中描述的注释来注释您的模型.

这个Spring的例子(http://spring.io/guides/gs/consuming-rest-xml-android/)也可能提供了如何使用SimpleXML的见解.

标签:java,spring,spring-rest
来源: https://codeday.me/bug/20190516/1115910.html