Angular2 XHR请求错误处理:无法获取实体

时间:2017-01-05 13:12:27

标签: angular xmlhttprequest

我很难理解我在http调用中遇到错误的行为。

目标是根据服务器在403或400个响应中返回的错误消息来设置不同的行为。

使用Chrome网络时,我可以看到消息

enter image description here

但是在执行错误的console.log时,我得到的是正文中的ProgressEvent对象。

enter image description here

有问题的代码非常简单,200处理得很好,返回的json是可访问的。

this.service.myFunction(this.email).subscribe(
        auth => console.log(auth), // works fine
        error => console.log(error) 
    );

在实际通话中我也尝试过捕捉,但没有运气。

this.myFunction.get(url).map(res => res.json())
    .catch( (err: Response) => Observable.throw(err.json()) ); //     throw the error, which is also the object described above

你知道我做错了什么吗?

由于

1 个答案:

答案 0 :(得分:2)

试试这个:

this.service.myFunction(this.email).subscribe(
    auth => console.log(auth), // works fine
    error => console.log(error.text()) 
);

Response的Angular 2文档说:

  

Response的接口受到Fetch Spec中定义的Response构造函数的启发,但被认为是一个静态值,其主体可以多次访问。实现中还有其他差异,但这是最重要的。

因此,如果.text()不再发送完整回复的正文,则必须更改服务器实施以发送200 OK和错误消息。

我想问题是XMLHTTPRequest的状态更改是通过读取标题然后Angular的Http库停止读取正文......(Read this