Angular 2 http服务。获取详细的错误信息

时间:2016-08-13 19:46:01

标签: http angular error-handling observable

执行对离线服务器的Angular2 http调用并没有在它的“错误响应”对象中提供太多信息我在Observable的.catch(错误)操作符或订阅错误委托中得到它们(它们实际上共享相同的信息) )。但正如您在控制台的屏幕截图中看到的那样,zone.js以某种方式显示了实际错误。 那么,我怎样才能获得这个特定的错误信息(net :: ERR_CONNECTION_REFUSED)?

感谢。enter image description here

3 个答案:

答案 0 :(得分:6)

每当服务器没有响应时,response.status将始终等于0(零)

{
  type: 3, //ResponseType.Error
  status: 0, // problem connecting endpoint
}

另请注意,当您执行CORS请求时,但未授权origin(浏览器中的url)(不在远程端点中配置的主机名的允许列表中),响应类似于上面的内容,类型属性除外将等于4 = ResponseType.Opaque ...

这意味着,已建立连接,但是,例如,从HTTP源执行的包含不包含源或HTTPS请求的标头返回的OPTIONS请求。

答案 1 :(得分:1)

您可以处理错误消息,以便更容易阅读。这肯定也可以扩展:

public Get() {
    return this.http.get(this.URL).map(this.extractData)
        .catch(this.handleError);
}

public extractData(res: Response) {
    let body = res.json();
    return body || {};
}

public handleError(error: any) {
    let errMsg = (error.message) ? error.message :
        error.status ? `${error.status} - ${error.statusText}` : 'Server error';
    console.error(errMsg);
    return Observable.throw(errMsg);
}

Check out this part of the docs on error handling.

答案 2 :(得分:-1)

如果没有深入研究代码,我的期望是如果服务器无法访问,则无法从服务器返回任何响应。因此,Response对象保持其初始化状态。