Java @ControllerAdvice响应主体始终为空
我想将响应主体设置为异常的错误消息:Java @ControllerAdvice响应主体始终为空,java,spring,spring-mvc,Java,Spring,Spring Mvc,我想将响应主体设置为异常的错误消息: @ControllerAdvice public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler { @ExceptionHandler(value = EntityNotFoundException.class) protected ResponseEntity<Object> handleNotFound(EntityNo
@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);
}
}
@ControllerAdvice
公共类RestResponseEntityExceptionHandler扩展ResponseEntityExceptionHandler{
@ExceptionHandler(值=EntityNotFoundException.class)
受保护的ResponseEntity handleNotFound(EntityNotFoundException ex,WebRequest请求){
System.out.println(例如getMessage());
返回handleExceptionInternal(例如,例如getMessage()、new HttpHeaders()、HttpStatus.I_AM_A_茶壶、请求);
}
}
我正在用restemplate.getForEntity(uri,String.class)
测试它,但是我似乎只能得到418null
响应
我知道执行在这里进入,因为响应是418
,我知道消息不是空的,因为它正在打印我想要的值
感谢任何帮助您没有提供有关
RestTemplate
配置或调用代码外观的信息,因此我将做出一些假设,如果其中任何一个错误,您可以纠正我
如果您仅使用通用的
catch(Exception ex)
块,则响应正文将不可用。您可以通过添加一个catch(httpclienterrexception ex)
块并从ex.getResponseBodyAsString()获取内容来访问响应正文。谢谢。我捕获了特定的异常,但没有使用getResponseBodyAsString()。有没有办法在RestTemplate配置中隐式处理这些异常,或者每个RestTemplate调用都应该单独尝试/捕获它们?@kaybee99,隐式处理它们是什么意思?你有没有一个你想要达到的目标的例子?