2016-08-12 59 views
6

我刚刚升级到Angular 2 RC 5,并且出于某种原因,我无法弄清楚,我无法提出任何http请求(即,请求从未发出/不显示在浏览器日志中)。无法使用Angular 2进行http请求rc5

这是直到今天的升级工作的代码。

console.log("Let's call github"); 
let url = 'https://raw.githubusercontent.com/angular/angular/master/LICENSE'; 
return this.get(url).do(d=>console.log('success')); 

当我的组件调用包含此代码的功能,Let's call github被输出,但随后的请求没有被制成。我确信@angular/httpObservableHttp是正确导入的,因为这个代码今天早上工作。我首先想到的是,我是错过了HttpModule,但我已经证实,我将其导入到我的主要AppModule

事实上,如果我注释掉HttpModule进口,这都没有区别,我可以看到。误差是相同的,如下所示:

Exception: TypeError: this._body is null 

这里是堆栈跟踪的摘录(在底部正在呼叫上面引述的功能的线): enter image description here

回答

8

更新2016年8月12日

这个问题已经解决,可能会在下一个版本中修复。目前的解决方法是跳过content-type设置GET请求或明确设置body=''作为请求选项。

链接:Gihub discussion

原来的答复

的错误似乎与代码在我每个HTTP请求之前运行的功能块。因为我与之交互的API预计JSON内容,我有以下的(options是指每个请求所用的RequestOptions对象):

//set content to JSON 
if(!options.headers.has("Content-Type")){ 
    options.headers.append("Content-Type", "application/json") 
} 

如果我注释掉这些行,请求被成功地进行。所以我在想,从Angular 2 rc 5开始,如果请求主体为空(如我的get请求来自OP),此块将引发错误。

如果我的直觉是正确的,在行为上的变化是由this commit(新rc 5

修复引起的(HTTP):将传递到请求的对象转换成字符串

我敢打赌当我设置内容类型头时,Angular会尝试帮助我,并为我请求身体字符串。当然,没有一个GET,因此错误。