angular
  • xmlhttprequest
  • 2016-08-12 12 views 6 likes 
    6

    Angular 2 RC 5にアップグレードしました。理由がわからないので、httpリクエストを行うことはできません。つまりリクエストは行われません。ブラウザのログに表示されます)。Angular 2 rc5で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が出力されますが、その後、要求がなされていません。この同じコードが今朝働いたので、ObservableHttpから@angular/httpを正しくインポートすることができます。私はHttpModule輸入をコメントアウト場合は私の最初の考えは、私がHttpModuleに欠けていたということでしたが、私は、私は実際に私のメインAppModule

    にインポートすることが確認できました、それは私が見ることができる違いはありません。以下のようにエラーは、同じである: enter image description here

    答えて

    8

    アップデート2016年8月12日:ここで

    Exception: TypeError: this._body is null 
    

    は、スタックトレース(下部の上に引用関数を呼び出すラインである)の抜粋です。

    これは修正されており、次のリリースで修正される予定です。現在の回避策は、GETリクエストのcontent-type設定をスキップするか、明示的に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がないのでエラーです。

    関連する問題