Retrofit简单封装,实现链式编程
来源:互联网 发布:nginx视频教程 编辑:程序博客网 时间:2024/05/21 19:29
说明
简单封装了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
欢迎访问,同时希望你提出宝贵意见。
阅读全文
0 0
- Retrofit简单封装,实现链式编程
- 链式编程,iOS简单封装属性字符串,实现富文本.
- Retrofit简单封装
- Retrofit的简单封装
- Retrofit的简单封装
- Retrofit+RxJava 简单封装
- Retrofit简单封装
- Retrofit的简单封装
- Rxjava+Retrofit简单封装
- Retrofit+okhttp3的简单封装实现网络请求和拦截
- retrofit的简单二次封装
- Retrofit的简单封装使用
- RxJava2+retrofit实现网络封装
- 链式队列简单实现
- 编程实现链式队列
- Retrofit网络通信库简单封装使用
- RXJava+Retrofit+MVP的简单封装
- Rxjava2.0和Retrofit简单封装使用
- js Date对象转成 对应格式的字符串 && NODE.JS从数据库读取的DATETIME对象 转成对应格式的字符串
- hdu 3032 Nim or not Nim? (SG函数+打表)
- 利用Jmap进行简单日志分析
- Android Native jni 编程入门
- 输入一个链表,输出该链表中倒数第k个结点。
- Retrofit简单封装,实现链式编程
- Android_服务Service讲解
- Struts--当action中有多个方法时的配置
- 利用阿里大于(大鱼)平台进行发送手机验证码
- 重新认识Appium
- Object的toString方法:Object的equals方法:System类的概念和构造:冒泡排序,自动装箱拆箱, Date类的常用方法:6 SimpleDateFormat的概述:
- Banner使用方法
- Java必懂之单例模式
- Python学习零散杂记(2017-10-25)