'RestTemplate get body with ResourceAccessException
I'm sending API and receiving status code 400 with body I need to parse
When working with RestTemplate I failed to parse response:
try {
ResponseEntity<ResponseVO> response = restTemplate.exchange(uri, HttpMethod.POST, request, ResponseVO.class);
} catch(HttpStatusCodeException e){
// not catch
String errorpayload = e.getResponseBodyAsString();
} catch (RestClientException e) {
// catch without body
}
Also With adding error handlers (default and specific) suggested I always get a ResourceAccessException
which isn't catch by HttpClientErrorException
and doesn't include body/headers data
How can I still get body/headers in that case? must I use alternatives to RestTemplate ?
Moreover, how can I return to context of request when I'm in caught exception inside handleError
:
public void handleError(ClientHttpResponse response) throws IOException {
Solution 1:[1]
The issue I was using interceptor which read my body already,
Changed RestTemplate to using BufferingClientHttpRequestFactory I can now re-read my body
RestTemplate restTemplate = new RestTemplate(new BufferingClientHttpRequestFactory(new HttpComponentsClientHttpRequestFactory()));
Using this wrapper allows for multiple reads of the response body.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |