如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
来源:互联网 发布:简单java小程序代码 编辑:程序博客网 时间:2024/06/05 11:34
一、进阶封装
①网络框架的使用
mService.getAppVersion() //通过service 调用方法 .subscribeOn(Schedulers.io()) //指定请求执行的环境 .observeOn(AndroidSchedulers.mainThread())//指定结果请求的环境 .map(new ResultFilter<>()) // 对结果进行过滤 .subscribe(new BaseNetSubscriber<>(mActivity, AppVersionBean-> { //TODO 处理请求的结果 此处 采用 java 8 特性 箭头函数 }));
②结果的过滤
public class ResultFilter<T> implements Func1<Result<T>, T> { //Result 就是接口返回数据的模型 @Override public T call(Result<T> response) { if (IFlagCode.successCode == response.getFlag()) {//成功的处理 return response.getData(); } else {//异常的处理 throw new CommException(response.getFlag(),response.getMsg()); } }}③Result的创建 接口返回的数据模型
public class Result<T>{ private int flag; private String msg; private T data; public int getFlag() { return flag; } public void setFlag(int flag) { this.flag = flah; } public String getMsg() { return msg; } public void setRetMsg(String msg) { this.msg= msg; } public T getData() { return data; } public void setData(T data) { this.data = data; }}④CommException 异常的处理
public class CommException extends RuntimeException { public CommException(int flag, String msg) { super(CommprocessCode(flag, msg)); } private static String CommprocessCode(int flag, String msg) { ToastUtils.showMsg(retMsg); return msg; }}⑤IFlagCode 判断接口成功的枚举
public interface IFlagCode { int successCode = 1; //根据后台返回的结果 设置}
⑥BaseNetSubscriber 网络的拦截处理
public class BaseNetSubscriber<T> extends Subscriber<T> { private Activity mActivity; private SuccessCallback<T> mCallback; public BaseNetSubscriber(Activity activity, SuccessCallback<T> mCallback) { this.mActivity = activity; this.mCallback = mCallback; } @Override public void onStart() { //网络请求开始 if (!NetWorkUtils.isConnected(BaseApp.application)) {//网络是否连接 ToastUtils.show("网络未连接"); return; } //其他处理 } @Override public void onCompleted() { //网络请求结束 } @Override public void onNext(T t) { //网络请求成功 mCallback.callback(t); } @Override public void onError(Throwable e) {//网络请求错误 try { if (!(e instanceof CommException)) { ToastUtils.show("网络异常"); e.printStackTrace(); } //其他处理 } catch (Throwable throwable) { throwable.printStackTrace(); } } //成功的回调 public interface SuccessCallback<T> { void callback(T t); }}
到此结束,网络框架封装简单明了,很适合初学者.
阅读全文
1 0
- 如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
- 如何封装自己的网络框架(RxJava+okHttp+Retrofit)
- 封装Retrofit + okhttp + rxjava网络请求框架
- Retrofit+OKhttp+RxJava框架的封装
- Retrofit+Rxjava网络封装框架
- 封装RxJava+Retrofit+OkHttp
- RxJava + Retrofit + OKHttp + RxLifecycle进一步封装网络
- RxJava+okhttp+Retrofit+Mvp 的封装
- 打造属于自己的网络请求框架(OKHttp+Retrofit+RxJava)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- retrofit+RxJava+okhttp简便封装实现网络请求(详解)
- Retrofit和RxJava加OkHttp网络请求进行二次封装
- Retrofit + Rxjava网络层的优雅封装
- Retrofit+Rxjava的封装
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- BigDecimal类的加减乘除
- 前端工程师是怎样一种职业
- 理解SQL SERVER中的分区表2
- Windows进程通信——创建线程
- springmvc.xml 中 <url-pattern></url-pattern>设置/和/*区别
- 如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
- 证明EXACT 4SAT问题为NP-complete
- QT 国际化
- redis学习之集群报错Node is not empty
- 在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- CSS之让pre标签自动换行
- 【Unity 笔记】文件的写入与读取(2)
- Redis Cluster部署、管理和测试