HttpErrorResponse无法从HttpServletResponse获得预期的响应

时间:2018-01-03 01:27:40

标签: angular http interceptor

我是angular2的新手,现在我使用来自服务器的intercepter get响应

当我返回401错误时,我的java服务器代码如下:

// httpServletResponse's type is HttpServletResponse    
httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
httpServletResponse.getWriter().write("required login");

和我在angular2代码上的拦截器如下:

 intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.rest = this.inj.get(RestProvider);
return next.handle(req).catch(err =>{
  console.log(err);
});

然后错误是如此困惑: HttpErrorResponse

状态始终为0并且它没有收到来自服务器的错误消息,但是,chrome的开发人员工具上的网络可以收到响应: headers

(对不起,我没有上传piture的权限,只有两个链接) 我已经搜索了很多关于此的问题,但也无法解决我的问题。谁能帮助我?非常感谢!

1 个答案:

答案 0 :(得分:0)

很抱歉这么晚回复。似乎angular2无法分析HttpServletResponse,我通过其他方式解决它:

如果401错误,我会重定向到未经授权的&#39;通过前进

delimiter ;;
DROP EVENT IF EXISTS `test_event`;;
CREATE EVENT IF NOT EXISTS `test_event` 
    ON SCHEDULE EVERY 1 minute
    starts current_timestamp()
    ON COMPLETION NOT PRESERVE ENABLE 
    COMMENT 'test report'
    DO  BEGIN
        DROP TABLE IF EXISTS `test`;
         CREATE TABLE test (name VARCHAR(20), owner VARCHAR(20),
     species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
    END;

然后在我未经授权的&#39;:

 httpServletRequest.getRequestDispatcher("unauthorized").forward(httpServletRequest,httpServletResponse);

RestRsult是一个类包,有些回复:

 @GET
@Path("unauthorized")
public Response unAuthorized(){
    return RestResult.failure(401,"need login",401);
}

然后,我将在angular2 HttpErrorResponse上收到状态401,并收到错误消息而不是未知错误或空消息。