[英]How to receive application/pdf response from a server using RestTemplate
[英]How to receive the API response in case 403 forbiddein using RestTemplate in Java?
我有一个 function 使用 RestTemplate 调用外部 API。
public ApiResponse callApi(String url, ApiRequest request) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<ApiRequest> httpRequest = new HttpEntity<>(request, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<ApiResponse> responseEntity = restTemplate.postForEntity(url, httpRequest, ApiResponse.class);
return responseEntity.getBody();
}
它在 HTTP 代码 200 的情况下工作正常,但在 403 代码的情况下抛出异常。 但是,即使出现 403 禁止错误,我仍然想知道我收到的响应正文中的消息。
这是 API 的响应主体,当使用 Postman 命中时会出现 403 响应,在使用代码命中时也会在异常堆栈跟踪中记录相同的内容:
{
"status": false,
"message": "Invalid key",
"errorcode": "A002",
"data": null
}
这是 ApiResponse 的结构:
public class ApiResponse {
private boolean status;
private String message;
private String errorcode;
}
我应该怎么做才能提取响应的正文?
尝试捕获 RestTemplate 抛出的异常,默认情况下它会抛出HttpStatusCodeException
:
try {
ResponseEntity<ApiResponse> responseEntity = restTemplate.postForEntity(url, httpRequest, ApiResponse.class);
} catch (HttpStatusCodeException e) {
log.warn(e.getResponseBodyAsString());
}
并尝试使用controlleradvice
通知 map 异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.