我刚刚升级到Angular 2 RC 5
,出于某种原因,我无法弄清楚,我无法发出任何http请求(即,该请求从未发出/未显示在浏览器日志中)。
这是直到今天的升级都有效的代码。
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
将输出,但不会发出请求。我敢肯定,Observable
并且Http
从@angular/http
正确地导入了,因为今天早上同样的代码可以正常工作了。我的第一个念头是我缺少HttpModule
,但是我已经确认将其导入到主目录中AppModule
实际上,如果我注释掉HttpModule
导入,则看不到任何区别。错误是相同的,如下所示:
Exception: TypeError: this._body is null
此问题已解决,可能会在下一版本中修复。当前的解决方法是跳过content-type
对GET
请求的设置,或者将其显式设置body=''
为请求选项。
链接:Gihub讨论
错误似乎与我在每个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发出的请求一样)。
如果我的直觉是正确的,则此行为更改是由此次提交引起的(是的最新消息rc 5
)
fix(http):将传递给请求的对象转换为字符串
我敢打赌,当我设置内容类型标头时,Angular会尝试提供帮助并为我字符串化请求正文。当然不存在带有的GET
,因此是错误的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句