改进请求的通用基本方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了改进请求的通用基本方法相关的知识,希望对你有一定的参考价值。

我有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();
            }
        });
答案

试试以下

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();
    }
});

以上是关于改进请求的通用基本方法的主要内容,如果未能解决你的问题,请参考以下文章

网络请求回调的实现方式

网络请求回调的实现方式

axios:基本使用常用配置项create方法请求和响应拦截器取消请求

改进数据访问层选择方法 Pattern

从Salesforce到Taleo的基本HTTP身份验证

Alamofire Promise 制作通用请求方法