2016-12-15 3 views
2

404または401などのHTTPエラーコードを持つjsonを返すサーバーとやりとりするAngular2コードのpiceを印刷しています。 jsonからjsonを読み取る方法が見つかりませんエラー応答。 通常の応答にデータがないため、.map()を使用できません。エラーからの角度2の抽出json

return new Promise((resolve, reject: Response) => { 
     this.http.request(new Request(requestoptions)) 
      .subscribe(
      data => {resolve()}, 
      error => { error.json() } //<-- No json() 
     ) 
     }; 

これはどのように処理しますか?

+0

チェック[この](https://angular.io/docs/ts/latest/guide/server-communication.html#!#error-handling): このサンプルコードは、他の人が助けるかもしれませんHttp Call中にエラーを処理します。 –

+0

try error => console.log(error)、エラーオブジェクトの応答がjsonオブジェクトではない可能性があります。 api sendコードの外観はどうですか? – deek

+0

エラーコードにjsonオブジェクトが含まれています(ブラウザのhttpレスポンスに表示されています) – ApriOri

答えて

1

レスポンスを含むhttpコードだけを解析しようとすることで問題を解決しました。どのように上

return new Promise((resolve, reject) => { 
    this.httpProvider.login(url, credentials) 
    .map(res => { 
     //avoid parsing the response from the server for some requests since it's not a valid json 
     if (res.status >= 400 && res.status < 500) { 
     return res.json(); 
     } 
     else return res; 
    }) 
    .subscribe(
     data => { 
     }, 
     error => { 
     switch (error.status) { 
      case 400: 
      case 401: 
      let erromsg: string = this.parseServerError(error); 
      reject(erromsg); 
      break; 
      case 404: 
      case 500: 
      reject("Server error"); 
      break; 

      default: 
      reject("Network Error"); 
     } 
     } 
    ); 
}); 




parseServerError(error): string { 
    try { 
    let message = error.json().message[0].description; 
    return message; 
    } catch (e) { 
    return "Undefined error"; 
    } 
}