执行对离线服务器的Angular2 http调用并没有在它的“错误响应”对象中提供太多信息我在Observable的.catch(错误)操作符或订阅错误委托中得到它们(它们实际上共享相同的信息) )。但正如您在控制台的屏幕截图中看到的那样,zone.js以某种方式显示了实际错误。 那么,我怎样才能获得这个特定的错误信息(net :: ERR_CONNECTION_REFUSED)?
答案 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);
}
答案 2 :(得分:-1)
如果没有深入研究代码,我的期望是如果服务器无法访问,则无法从服务器返回任何响应。因此,Response对象保持其初始化状态。