2016-12-07 2 views
3

自分のレスポンスが本文に内容が含まれているかどうかを確認したいと思います。私はres.totalBytesがそれをすると思っていただろうが、それは常に未定義です。Angular2のhttp.responseで空の応答本文をチェックする方法は?

this.http.get(this.url, this.options) 
    .toPromise() 
    .then((res) => { 
     console.log("totalBytes: "+res.totalBytes);//outputs 'totalBytes: undefined' 
     console.log("res body: "+JSON.stringify(res.json()));//outputs a great big JSON object just as I would expect. 
     }); 

体が空の場合は(理想的にスローされた例外に依存せずに)をチェックするための最良の方法は何だし、なぜ身体がそれに巨大なオブジェクトを持っている場合でも、常に未定義TotalBytesのでしょうか?

+0

'console.log(typeof res);'はコンソールに何を出力しますか? – echonax

+0

'object'だけを出力します。私が 'res.status'を出力すると' 200'が得られ、 'totalBytes'以外は動作すると期待しているように動作します。 – WillyC

+1

'totalBytes'は実装されていないと思います。 bodyは 'res.text()'で得ることができます。例外を回避する本当の理由はありますか?予想される失敗を処理するには、約束/観測可能なエラー処理が最も簡単な方法です。 – estus

答えて

1

totalBytesまたはの場合、標準プロパティではありませんが、未定義です。だから、体が存在するかどうかをチェックするためにそれらを使うことはできません。

私の現在のところ。溶液が結果を使用している[「_本体」]、等:

if (res['_body']) { 
    json = res.json() 
} 

「_body」がインタフェースに存在しないが、それは実際の応答に存在しているが。少なくともそれは私のアプリで動作します。

関連する問題