当客户端请求生成应用程序/json 内容的资源时,接受头为 application/xml。请求因 HttpMediaTypeNotAcceptableException 异常而失败,并使用下面代码中提到的异常处理程序注释将其包装到响应实体对象中的错误消息正文中。但是,当使用 HttpMessageConverter 将返回值写入响应时,我们会再次收到 HttpMediaTypeNotAcceptableException。这是因为它使用可接受的请求类型检查响应的可生产内容类型,但这正是我们试图使用错误消息与客户端通信的内容。我该如何解决这个问题?顺便说一句,所有其他异常都可以很好地解析为错误消息。请指教。
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body,
HttpHeaders headers, HttpStatus status, WebRequest request) {
// Setting the response content type to json
headers.setContentType(MediaType.APPLICATION_JSON);
return ResponseEntity.status(status).headers(headers).body(body);
}
}