2016-08-12 54 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,因此錯誤。