无法使用Angular 2 rc5发出http请求

甲虫汁

我刚刚升级到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

这是堆栈跟踪的摘录(底部是调用上面引用的函数的行): 在此处输入图片说明

甲虫汁

更新2016-08-12

此问题已解决,可能会在下一版本中修复。当前的解决方法是跳过content-typeGET请求设置,或者将其显式设置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,如果请求主体为空,则此块会引发错误(与getOP发出的请求一样)。

如果我的直觉是正确的,则此行为更改是由此次提交引起的(是的最新消息rc 5

fix(http):将传递给请求的对象转换为字符串

我敢打赌,当我设置内容类型标头时,Angular会尝试提供帮助并为我字符串化请求正文。当然不存在带有的GET,因此是错误的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章