2014-10-16 78 views
2

我有一个spring rest客户端。当头部没有提供认证细节和我打的服务与 ResponseEntity<String> resp = restTemplate.exchange(url, HttpMethod.GET, request, String.class);Spring Rest Client希望看到错误消息而不是异常

我得到异常 invoking error handler Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 Unauthorized at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) 但是,当我打的网址上的Mozilla浏览器,我得到的消息像 {"errors":[{"code":"xxxx","reason":"xxxx"}]} 现在,这里就是我想要的:我想在我的代码中捕获此错误消息,而不是获得401例外。我试图查看是否有任何回应。但收到的回复为空。我如何捕获从webservice收到的错误消息

+0

这仍然是一个问题。我想得到答案,然后决定如何处理它,而不是抛出异常。在处理方面效率低得多。 – 2017-09-18 23:18:48

回答

21

我觉得很奇怪发表回答我自己的问题。但我终于通过以下方式实现了...

} catch (HttpClientErrorException e) { 
     System.out.println(e.getStatusCode()); 
     System.out.println(e.getResponseBodyAsString()); 
    } 

我错误地搜索了响应实体中的错误。但在例外情况下可用。

+1

对于只查找异常原因/消息的人:'e.getResponseBodyAsString()'返回许多其他内容,如statusCode,statusText等,除了Exception的原因/消息外。您将不得不从异常中手动解析它。 – Mubin 2016-06-10 22:35:36