gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:47 26 4
gpt4 key购买 nike

我是 angular2 的新手,现在我使用拦截器从服务器获取响应

当我返回 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);
});

然后err就这么糊涂了: HttpErrorResponse

status一直是0,没有收到服务器的错误信息,但是chrome开发者工具上的网络可以收到响应: headers

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

最佳答案

很抱歉这么晚才回复。 angular2好像不能解析HttpServletResponse,我换个方式解决:

如果出现 401 错误,我将重定向到 'unauthorized' by forward

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

然后在我的“未授权”中:

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

RestRsult是一个类封装了一些响应:

public static Response failure(int errorcode, String errormsg,int status) {
ResponseFailureObj result = new ResponseFailureObj(errorcode, errormsg);
return Response.status(status).type(MediaType.APPLICATION_JSON).entity(result).build();
}

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

关于angular - HttpErrorResponse 无法从 HttpServletResponse 获得预期的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48070031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com