java - Spring ExceptionHandler 未返回有效的响应代码

标签 java spring

我在 spring RestController 中有这样的异常处理程序。

   @ExceptionHandler(AuthException.class)
public ResponseEntity<String> handleCustomException(AuthException ex, Writer writer) throws IOException {

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    ResponseEntity responseEntity = new ResponseEntity(headers, HttpStatus.FORBIDDEN);
    (new ObjectMapper()).writeValue(writer, ex.getAsMap());

    return responseEntity;
}

我期望结果: 内容类型:application-json 状态:403 和正文:

{"date":"06-06-2019 18:36:34","errorCode":"102","error":"Login or password is not right","message":"Access denied"}

但是结果是: 状态:200,未设置内容类型。 有什么建议吗?

最佳答案

你可以这样尝试吗?这是一个代码片段,请根据要求进行修改。

@ControllerAdvice
    public class GlobalExceptionHandler{
        @ExceptionHandler(MyCustomException.class)
        @ResponseBody
        public ResponseEntity<?> handleCustomException(MyCustomException e) {        
            String bodyJson = "Fatal Exception while performing.";
            return ResponseEntity.status(HttpStatus.FORBIDDEN).contentType(MediaType.APPLICATION_JSON).body(bodyJson);
        }
    }

关于java - Spring ExceptionHandler 未返回有效的响应代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56480997/

相关文章:

java - 将基于配置文件的属性文件解析为 Spring 测试

java - 使用 spring-data-redis 更新 redis 中的实体

java - 使用 UserVoice Java SDK 的 Android Studio

java - 带有 JPA 子查询的 Spring Data 规范

java - 如何与另一件 JComboBox 元素交换?

java - 如何将集合属性绑定(bind)到 Spring MVC 中的表单

Spring安全数据模型

java - 从 Int 数组中删除重复(重复)元素

java - 如何从 ImageView 获取图像 id?

java - 如果我禁用授权,如何在测试中模拟安全上下文