2014-10-16 62 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