如何封装自己的网络框架 -进阶封装 (RxJava+okHttp+Retrofit)
2017-06-08 11:20
603 查看
一、进阶封装
①网络框架的使用
②结果的过滤
③Result的创建 接口返回的数据模型
④CommException 异常的处理
⑤IFlagCode 判断接口成功的枚举
⑥BaseNetSubscriber 网络的拦截处理
到此结束,网络框架封装简单明了,很适合初学者.
①网络框架的使用
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); } }
到此结束,网络框架封装简单明了,很适合初学者.
相关文章推荐
- 如何封装自己的网络框架(RxJava+okHttp+Retrofit)
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Retrofit2+OkHttp3+RxJava搭建网络框架
- Android网络框架之Retrofit + RxJava + OkHttp
- retrofit+RxJava+okhttp简便封装实现网络请求(详解)
- Android RxJava+Retrofit+okhttp异步网络加载框架
- (一)最流行的网络请求框架Rxjava2+Retrofit完美封装
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- Android项目MVP模式框架+okhttp+rxjava+retrofit网络框架
- 基于Retrofit、OkHttp、Gson封装通用网络框架
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- Retrofit2+OkHttp3+RxJava搭建网络框架
- Retrofit + RxJava + OkHttp 让网络请求变的简单-封装篇
- 基于Retrofit、OkHttp、Gson封装通用网络框架
- Retrofit+OKhttp+RxJava框架的封装
- Retrofit2+OkHttp3+RxJava构建网络框架
- RxJava+Retrofit+OkHttp深入浅出-终极封装二(网络请求)
- RxJava2+Retrofit2网络请求框架封装及使用
- 最流行的网络请求框架Rxjava2+Retrofit完美封装,郭霖
- 单列模式,RecyclerView适配器封装,BroadcastReceiver介绍,Mvp+Retrofit+rxjava+okhttp框架的梳理总结