Пользовательская обработка ошибок CallAdapter для Retofit2 + RxJava2 - PullRequest
0 голосов
/ 26 июня 2019

Сервер отправляет ответ в случае успеха (код 2xx):

{
    "user":"User",
    "age":16
}

И в случае сбоя (4xx) следующий Json отправляется внутри errorBody:

{
    "errorMessage":"Server is not working",
    "action":{
         ...
    }
}

Я использую Retrofit v2.4.0 и RxJava2.

Как я могу создать собственный CallAdapter для моего случая? Я прочитал SquareHadlingAdapter , но это было без RxJava2

1 Ответ

0 голосов
/ 26 июня 2019

Настоятельно рекомендуется использовать один и тот же объект из-за необходимости модернизации, вы можете сделать это, используя общую модель

public class GenericResponseModel {
    public int statusCode;
    public String message;
    public Object data;
}

, а затем проанализировать конкретную модель в ваших onNetworkSuccess и onNetworkError примерно так:

HomeModel homeModel = new Gson().fromJson(new Gson().toJson(genericResponseModel.data), HomeModel[].class);

Используя этот подход, вы можете создать BaseModel и обрабатывать разные ответы.Я надеюсь, что это ответ, который вы найдете.

вы можете удалить statusCode, сообщение, если нет в ответе

...