Retrofit+RxJava完美封装(二)
来源:互联网 发布:阿里云华东 编辑:程序博客网 时间:2024/06/06 11:36
前面一章已经完整的讲述了Retrofit+RxJava的封装.
但是由于又来了一个需求,我这封装无法满足,所以这里需要再修改下.
需求:
不要对返回的数据做处理
如 返回的数据为:
{ data:{}, errorCode:200, errorInfo:""}
原先我会把先判断errorCode然后把data数据取出,转化为对应的对象.
现在需求是,直接把原来的数据返回.
由于预先处理的代码都是封装在OkHttp的拦截器中,所以也不方便传参数.
所以我这里以添加Head头参数的方式来判断是否要对返回的数据进行预先处理.
代码如下:
@POST @FormUrlEncoded Observable<String> weexRequest(@Url String url , @FieldMap Map<String,Object>param,@Header("origion")boolean origion);
这里添加了@Head参数.
在预先处理返回数据前,我们可以先获取这个值,然后进行处理.
代码如下:
String origion = newRequest.header("origion"); originalResponse = dealResponseData(Boolean.parseBoolean(origion),originalResponse);
/** * 统一处理原始数据 * * @param origion 是否需要原生的 不转化的数据 * @param originalResponse */ private static Response dealResponseData(Boolean origion, Response originalResponse) { String jsonString = null; try { BufferedSource bufferedSource = originalResponse.body().source(); jsonString = bufferedSource.readString(Charset.forName("utf-8")); } catch (Exception e) { e.printStackTrace(); } if (origion != null && origion) { return onSuccess(originalResponse, jsonString); } ResponseMessageBean msgBean = ResponseMessageBean.analyseReponse(jsonString); if (msgBean == null) return onSuccess(originalResponse, msgBean.data.toString()); if (msgBean != null && (msgBean.errorCode == 200)) { showError = true; if (msgBean.data != null) { return onSuccess(originalResponse, msgBean.data.toString()); } else { return originalResponse.newBuilder().body(null).build(); } } else { onFailed(msgBean); throw new RuntimeException(msgBean.moreInfo.toString()); } }
以后可能还需要慢慢根据修改,不断去修改代码.
完美封装其实并不完美,但是可以渐渐趋向完美.
0 0
- Retrofit+RxJava完美封装(二)
- Retrofit+RxJava 完美封装
- Android RxJava+Retrofit完美封装
- Android RxJava+Retrofit完美封装
- Retrofit+Rxjava 网络请求的完美封装(二)(观察者模式)
- Retrofit+Rxjava的封装
- retrofit+RXjava二次封装
- Retrofit+RxJava 简单封装
- Retrofit+Rxjava乞丐封装
- Retrofit+Rxjava封装类
- RxJava+Retrofit 封装
- Retrofit+RxJava 封装
- Retrofit+RxJava封装
- 封装RxJava+Retrofit+OkHttp
- Rxjava+Retrofit+MVPdemo封装
- Rxjava+Retrofit简单封装
- MVp封装RxJava+Retrofit
- retrofit-rxjava封装、mvp-retrofit-rxjava demo
- bzoj 2653: middle (二分+主席树)
- 进程组和组长进程
- ubuntu安装软件的管理
- js的闭包(二)——闭包的机理之我见
- 吃鸡腿
- Retrofit+RxJava完美封装(二)
- SDL_CDStop函数
- scrollview嵌套listview运行后最先显示出来的位置不在顶部而是下方问题
- C++中抽象类和接口的区别介绍
- 如何更改电脑盘符
- popwindow被虚拟按键遮挡
- flex灵活布局
- IO设备
- AngularJS 异常处理