我有一个REST API方法:它将返回Xml作为响应。只是为了简单,假设它抛出简单的异常。Spring mvc - 为XML和JSON响应配置错误处理
@RequestMapping(value = "machine/xmlData", method = RequestMethod.GET, produces = "application/xml")
public ResponseEntity<String> getXml(HttpServletRequest request)
throws Exception {
return getDataFromService();
}
现在我正在处理像这样的REST控制器中的异常。 这是一般异常handle方法,对于其他API方法以及(XML或JSON响应)
@ExceptionHandler(Exception.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public ResponseEntity HandleException(Exception ex, HttpServletRequest request) {
ex.printStackTrace();
// here logic to generate Custom error Object
return new ResponseEntity<Object>(customErrorObject, HttpStatus.INTERNAL_SERVER_ERROR);
}
案例1:接受: “应用程序/ XML”,并从服务有效响应 一切工作正常。
案例2:接受:从服务 “应用程序/ XML” 和异常然后我得到406 Not Representable
按我的理解,它是
因为ResponseEntity从HandleException是JSON和接受标头 是“应用程序/ xml”,这就是为什么我越来越406.
无论如何,我可以发送错误HandleException方法的响应xml和json? 我知道关于REST API方法,我们可以定义像这样的produces={"application/json","application/xml"}
我很努力把这个放在HandleException方法上。
任何提示将有很大的帮助。
谢谢。
删除handleResult中的@ResponseStatus并尝试 – kuhajeyan
@kuhajeyan它没有帮助。我试过 – Roxy