【发布时间】:2013-01-29 11:33:41
【问题描述】:
我正在调用一个返回 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);
当服务器端的查找失败时,它会返回 404 以及一些 XML。我最终得到一个UnmarshalException,因为它无法读取 XML。
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"exception"). Expected elements are <{}foo>,<{}bar>
响应的正文是:
<exception>
<message>Could not find a Foo for ID 123</message>
</exception>
如果发生 404,我如何配置 RestTemplate 以便 RestTemplate.getForObject() 返回 null?
【问题讨论】:
-
getForObject,默认情况下,应该抛出一个带有 404 的HttpClientErrorException。你是如何配置你的RestTemplate的? -
@SotiriosDelimanolis 我无法再访问代码,但您描述的默认行为听起来像我当时所期望的。 (我应该养成在以后的问题中说明版本的习惯。)