我使用Spring REST来处理我的请求。 这是我的代码示例:
RestTemplate restTemplate = new RestTemplate();
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(apiAddress + "action?uniqueId=" + id, HttpMethod.GET, entity, String.class);
}catch (RestClientException ex) {
System.out.println(responseEntity.toString());
String errorMessage = ex.getMessage();
}
当我获得200状态和带有返回值的JSON时,一切正常。
问题在于,例如,404 JSON。
在调试过程中,我发现当404发生时,responseEntity
仍为空,因此我无法获取错误代码。此外,我无法从服务器获得JSON回复,我知道它正在发送。
我尝试了HTTP Requester,它可以正常处理200个响应 - 给我请求的数据和404响应 - 给我一个带有错误描述的JSON。
最诚挚的问候, 卡罗尔
答案 0 :(得分:0)
我已经设法弄清楚发生了什么。 我希望它可以帮助别人:
我已实施ResponseErrorHandler
:
public class VariousErrorsResponseHandler implements ResponseErrorHandler {
@Override
public boolean hasError(ClientHttpResponse clientHttpResponse) throws IOException {
if(clientHttpResponse.getStatusCode() == HttpStatus.NOT_FOUND || clientHttpResponse.getStatusCode() == HttpStatus.UNAUTHORIZED) return false;
else return true;
}
@Override
public void handleError(ClientHttpResponse clientHttpResponse) throws IOException {
System.err.println(clientHttpResponse.getStatusCode() + "\n" + clientHttpResponse.getStatusText());
}
}
然后将其设置为restTemplate的错误处理程序:
restTemplate.setErrorHandler(new VariousErrorsResponseHandler());
完成了:)