在改进成功和错误回调中使用不同的模型进行反序列化

时间:2017-03-19 10:10:09

标签: java android retrofit retrofit2

我正在使用的API为成功和失败提供了完全不同的响应。

成功:

{
   "token":"asdfasdfhkAADBSKJBJBJKBJBK^%&BJBLLKHKJBXZ",
   "email":"sample@sample.com",
   "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) {

        }
    });

如您所见,改造迫使我对ResponseObjectsuccess使用示例failure。因此我无法将失败响应转换为pojo。

我看过自定义反序列化。但是为每个请求编写自定义反序列化器很快就会失控。

请帮忙。

1 个答案:

答案 0 :(得分:0)

我认为最好的解决方案是让我们自己在GSON中进行Response Body形式的改造和序列化。我也在寻找其他类型的解决方案。