Retrofit简单封装,实现链式编程

说明

简单封装了Retrofit,实现链式编程,兼容其他插件(例如rxjava,gson等)。 Retrofit创建的Service对象之后,通过使用回调的方式调用方法返回对应方法的返回对象。 没有注入代码,没有使用反射。不增加程序负担。

例如:
//定义service,请求
interface MainService {
    @GET("s?wd=/{str}")
    Call<String> searchRetrofit(@Path("str") String str);
}

//回调处理
Callback<String> callback = new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {
            String body = response.body();
            webView.loadDataWithBaseURL("", body, "text/html", "UTF-8", "");
        }

        @Override
        public void onFailure(Call<String> call, Throwable t)
        }
    };

//发送请求
RetrofitKT
        .newBuilder()
        .addConverterFactory(RetrofitConverter.RetrofitFactory.create())
        .build("http://wwww.baidu.com/")
        .service(MainService.class)
        .method("searchRetrofit", "Retrofit")
        .obtain(new BaseCallback<>(callback));

service()方法,传入一个Service类(MainService.class),这里使用Retrofit.create()创建这个service对象(mainService),并通过method方法得到mainService中的方法(searchRetrofit()),最后在obtain()中调用searchRetrofit()方法。
obtain()方法传入一个接口ReturnTypeAdapter,在这里会将searchRetrofit()方法的返回值(Call)传递给hook方法。可以通过自定义ReturnTypeAdapter来处理返回值。

BaseCallback就是简单实现。在hook方法中进行了网络请求,并添加回调,这里可以实现很多自定义功能(例如 配置统一取消请求等)。

public interface ReturnTypeAdapter<T> {

    void hook(T result);

}

public class BaseCallback<T> implements ReturnTypeAdapter<Call<T>> {

    private Callback<T> callback;

    public BaseCallback(Callback<T> callback) {
        this.callback = callback;
    }

    @Override
    public void hook(Call<T> result) {
        result.enqueue(new Callback<T>() {
            @Override
            public void onResponse(Call<T> call, Response<T> response) {
                if (callback != null)
                    callback.onResponse(call, response);
            }

            @Override
            public void onFailure(Call<T> call, Throwable t) {
                if (callback != null)
                    callback.onFailure(call, t);
            }
        });
    }

}

Github 链接

https://github.com/Huang102/RetrofitKT
欢迎访问,同时希望你提出宝贵意见。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值