Java 接收POST调用的HttpClientErrorException时缺少ResponseBodyAsString
我试图在RestClient调用中发送带有Http状态代码的自定义错误消息 微服务1代码:Java 接收POST调用的HttpClientErrorException时缺少ResponseBodyAsString,java,spring-boot,resttemplate,spring-resttemplate,Java,Spring Boot,Resttemplate,Spring Resttemplate,我试图在RestClient调用中发送带有Http状态代码的自定义错误消息 微服务1代码: try{ String method = request.getMethod(); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<byte[]> responseEntity = restTemplate.exchange("/someUrl", method, entity, byte[].cl
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());
}
来自microservice 1呼叫后响应:
响应状态代码-401
{
"errorMessage": "test error message"
}
401 null
对于GET方法,其工作方式与预期相同,但是对于POST/PUT/DELETE,它不适用于microservice到microservice
当我用POST方法直接从postman中点击microservice2时,它起作用了,但当我用POST方法从microservice1中点击microservice2时,它不起作用了
当我从microservice 1点击microservice 2控制器时,以下是响应标题:
{
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]
}
当我从邮递员处点击microservice 2控制器时,以下是响应标题:
{
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]
}