我想将响应的主体设置为异常的错误消息:
@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = EntityNotFoundException.class)
protected ResponseEntity<Object> handleNotFound(EntityNotFoundException ex, WebRequest request) {
System.out.println(ex.getMessage());
return handleExceptionInternal(ex, ex.getMessage(), new HttpHeaders(), HttpStatus.I_AM_A_TEAPOT, request);
}
}
我正在使用restTemplate.getForEntity(uri, String.class)
对其进行测试,但我似乎得到的只是418 null
响应。
我知道执行进入此处,因为响应是418
,我知道该消息不是空的,因为它打印了我想要的值。
任何帮助表示赞赏
答案 0 :(得分:1)
您没有提供有关RestTemplate
配置的信息或调用代码的内容,因此我将做出一些假设,如果其中任何一个出错,您可以纠正我。
如果这些都是真的那么你的RestTemplate在遇到4XX状态代码时会抛出HttpClientErrorException。您可以找到代码here。
如果您只使用通用catch (Exception ex)
块,则无法使用响应正文。您可以通过添加catch(HttpClientErrorException ex)
块并从ex.getResponseBodyAsString()