ResponseBodyAsString отсутствует при получении исключения HttpClientErrorException для вызова POST
Я пытаюсь отправить настраиваемое сообщение об ошибке с кодами состояния Http в вызове RestClient
код микросервиса 1:
try{
String method = request.getMethod();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<byte[]> responseEntity = restTemplate.exchange("/someUrl", method, entity, byte[].class);
} catch (HttpServerErrorException | HttpClientErrorException e) {
String errorString = e.getResponseBodyAsString();
if(Strings.isNullOrEmpty(errorString)) {
errorString = e.getMessage();
}
return new ResponseEntity<>(errorString, new HttpHeaders(), e.getStatusCode());
}
код микросервиса 2:
@RequestMapping(value="/someUrl", method= { RequestMethod.GET, RequestMethod.POST})
public ResponseEntity<?> executeSoapServer(@RequestHeader HttpHeaders headers, HttpServletRequest request, HttpServletResponse resp){
JsonObject obj = new JsonObject();
obj.addProperty("errorMessage", "test error message")
return new ResponseEntity<>(obj.toString(), new HttpHeaders(), HttpStatus.UNAUTHORIZED);
}
От микросервиса 1 ответ на вызов GET: код состояния ответа - 401
{
"errorMessage": "test error message"
}
Ответ на вызов POST из микросервиса 1: код состояния ответа - 401
401 null
Для метода GET он работает так, как ожидалось, но для POST/PUT/DELETE не работает для микросервиса для микросервиса.
Когда я напрямую нажимаю микросервис 2 от почтальона с помощью метода POST, он работает, но когда я нажимаю микросервис 2 из микросервиса 1, метод POST не работает.
Когда я нажимаю на контроллер микросервиса 2 из микросервиса 1, ниже приведены заголовки ответа:
{
Access-Control-Allow-Credentials=[true],
Access-Control-Allow-Methods=[GET,POST,PUT,PATCH,DELETE,HEAD],
X-Application-Context=[eportal:local:8082],
ep-flowid=[c35c3098-a7a5-712a-8e38-4d1ad99fccd0],
Access-Control-Expose-Headers=[ep-flowid],
X-Content-Type-Options=[nosniff],
X-XSS-Protection=[1; mode=block],
Cache-Control=[no-cache, no-store, max-age=0, must-revalidate],
Pragma=[no-cache],
Expires=[0],
X-Frame-Options=[DENY],
Content-Type=[application/json;charset=UTF-8],
Content-Length=[29],
Date=[Mon, 01 Jun 2020 13:59:59 GMT]
}
Когда я нажимаю на контроллер микросервиса 2 от почтальона, ниже приведены заголовки ответов: