2017-12-15 14 views
0

HttpClientModuleを使用してAngular 5でWebサービスコールを作成していて、すべての200ステータスの応答に対応しています。しかし、400のステータスがあれば、待機して待機し、最終的に503ステータスになります。Webサービスコールから返されないAngular 5 Httpエラー

たとえば、この関数を正しいユーザー名/パスワードで呼び出すと、この関数は正常に動作し、ステータスは200に戻り、ユーザーオブジェクトが返されます。しかし、私は間違ったユーザー名/パスワードを渡す場合、私は400エラーを取得しないで、私は約1分後に503エラーを取得します。

サーバー側のログには、Webサービスが要求に応じて400のステータスを返していますが、何も戻ってこないことがわかります。ここで

は自分のWebサービスの呼び出しコードである:ここで

login(username: string, password: string): Observable<boolean> { 
    const url = this.getUrl('/v1/users/login'); 
    const headers = { 
    headers: new HttpHeaders({'Content-Type': 'application/json', 'transactionId': uuid.v4()}) 
    }; 
    const body = { username, password }; 

    return new Observable<boolean>(observer => { 
    this.http.post<User>(url, body, headers).subscribe(
     (user: User) => { 
     console.log('login: Success: ', user); 
     observer.next(true); 
     }, 
     (err: HttpErrorResponse) => { 
     console.log('login: Error: ', err); 
     observer.next(false); 
     } 
    ); 
    }); 
} 

Chrome Networkログです:

+0

ネットワークパネルには何が表示されますか?最終的には、リクエストがブラウザに届いてから応答が返るまで、ブラウザとサーバーの間にあります。 – shaunhusain

+0

Chromeネットワークログの投稿画像 – MLefebvre

+0

エラーレスポンスを処理するのに正しいコードですか? – MLefebvre

答えて

1

は、サーバがそれにバグがありましたが判明します。ログに "media type"に関するエラーが発生しました。これが解決されると、サーバーは正しいエラー応答を返送し、私のコードはそれらを渡しています。

+0

うれしいことに、あなたはそれを理解して、実際にはサーバ側であった。ほとんどの場合、httpserviceは基本的にブラウザ固有のxhrオブジェクトのラッパー(広く使用され、テストされている)であるため、このような状況では、 – shaunhusain

関連する問題