2017-03-19 7 views
2

私が扱っているAPIは、成功と失敗に対して全く異なる応答を返します。改造成功とエラーコールバックでデシリアライズに異なるモデルを使用

成功:

{ 
    "token":"asdfasdfhkAADBSKJBJBJKBJBK^%&BJBLLKHKJBXZ", 
    "email":"[email protected]", 
    "role":"admin" 
} 

失敗:

{ 
    "name": "NotAuthenticated", 
    "message": "Invalid login.", 
    "code": 401, 
    "className": "not-authenticated" 
} 

私が改造するのは非常に新しいですし、呼び出しを行うために以下のコードを使用しています。

LoginRequest request = new LoginRequest(mobileNumber, password); 
    ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class); 

    Call<LoginResponse> call = apiService.authenticateUser(request); 
    call.enqueue(new Callback<LoginResponse>() { 
     @Override 
     public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) { 


     } 

     @Override 
     public void onFailure(Call<LoginResponse> call, Throwable t) { 

     } 
    }); 

あなたが見ることができるように、改造はsuccessfailureの両方のためのサンプルResponseObjectを使用するように私を強制します。そして、私は失敗応答をpojoに変換することができません。

私はカスタムデシリアライズを見てきました。しかし、各要求に対してカスタムデシリアライザを作成すると、すぐに制御が外れることがあります。

助けてください。

+1

あなたは 'errorBody'を探しています – EpicPandaForce

+0

私は_failure_も200を返すと思いますか? –

+0

いいえ、すべての失敗応答は400〜499の間のエラーコードを返します。 –

答えて

0

私はGSONで自分自身でレスポンスボディフォームを改造してシリアライズすることになると思います。私はまた、他の種類の解決策を探しています。

関連する問題