Модифицированный базовый метод для запроса - PullRequest
0 голосов
/ 09 сентября 2018

У меня проблема с Retrofit и проверкой дубликатов. Я должен проверять каждый раз response код или тип статуса!

Мне нужен wrapper метод запроса, который проверяет, работает ли этот дубликат. (дубликаты включают в себя: showLoading(), response.code(), onFailure() ручка ...).

Мне нужно GenericMethod для этого:

UserService service = RetrofitInstance.getRetrofitInstance().create(UserService.class);

service.RequestVerification(token, mobileNumber).enqueue(new Callback<ClientData<User>>() {
            @Override
            public void onResponse(@NonNull Call<ClientData<User>> call, @NonNull Response<ClientData<User>> response) {
                doAction();//Action must passed to this method.
                GeneralTools.hideLoading();               
            }

            @Override
            public void onFailure(@NonNull Call<ClientData<User>> call, @NonNull Throwable t) {
             GeneralTools.hideLoading();
             dialogError.show();
            }
        });

1 Ответ

0 голосов
/ 13 сентября 2018

Попробуйте ниже

private static class CallbackHandler<T> implements Callback<T> {
    @Override
    public void onResponse(Call<T> call, Response<T> response) {
        int code = response.code();
        if (code >= 200 && code < 300) {
            onSuccess(response);
        } else if (code == 401) {
            // logic to refresh token or user then recall the same api
            call.clone().enqueue(this);
        }
    }

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

    }

    public void onSuccess(Response<T> response) {

    }

}

Затем измените свой звонок, как показано ниже

service.RequestVerification(token, mobileNumber).enqueue(new CallbackHandler<ClientData<User>>() {
    @Override
    public void onSuccess(Response<ClientData<User>> response) {
        doAction();//Action must passed to this method.
        GeneralTools.hideLoading();               
    }

    @Override
    public void onFailure(@NonNull Call<ClientData<User>> call, @NonNull Throwable t) {
     GeneralTools.hideLoading();
     dialogError.show();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...