veg*_*4me 22 java rest spring jaxb
我打电话返回XML REST服务,并使用Jaxb2Marshaller元帅我的课(例如Foo,Bar等).所以我的客户端代码如下所示:
HashMap<String, String> vars = new HashMap<String, String>();
vars.put("id", "123");
String url = "http://example.com/foo/{id}";
Foo foo = restTemplate.getForObject(url, Foo.class, vars);
Run Code Online (Sandbox Code Playgroud)
当服务器端的查找失败时,它返回404以及一些XML.我最终UnmarshalException因为无法读取XML而被抛出.
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"exception"). Expected elements are <{}foo>,<{}bar>
Run Code Online (Sandbox Code Playgroud)
回复的主体是:
<exception>
<message>Could not find a Foo for ID 123</message>
</exception>
Run Code Online (Sandbox Code Playgroud)
如何配置,RestTemplate以便在404发生时RestTemplate.getForObject()返回null?
Tim*_*Tim 31
Foo foo = null;
try {
foo = restTemplate.getForObject(url, Foo.class, vars);
} catch (HttpClientErrorException ex) {
if (ex.getStatusCode() != HttpStatus.NOT_FOUND) {
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
要专门捕获 404 NOT FOUND 错误,您可以捕获HttpClientErrorException.NotFound
Foo foo;
try {
foo = restTemplate.getForObject(url, Foo.class, vars);
} catch (HttpClientErrorException.NotFound ex) {
foo = null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19789 次 |
| 最近记录: |