如何封装自己的网络框架 -进阶封装(RxJava+okHttp+Retrofit)

xiaoxiao2021-02-28  84

一、进阶封装

①网络框架的使用

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

到此结束,网络框架封装简单明了,很适合初学者.

转载请注明原文地址: https://www.6miu.com/read-72710.html

最新回复(0)