## Rxjava+ReTrofit+okHttp深入浅出-终极封装特殊篇(替换Gson返回)
##背景
在之前的封装1-5[Rxjava+ReTrofit+okHttp深入浅出-终极封装](http://blog.csdn.net/column/details/13297.html)中我们都是通过传统的GsonConverterFactory自动解析,这样做确实很方便,用户能直接获取返回的对象,不用关心具体的转换,但是:这随之而来有很多的缺陷(虽然官网推荐这样使用);
比如:无法使用其他第三发转换框架;泛型无法中间传递,封装无法统一处理缓存结果;回调信息无法统一处理..........
所以我们在享受它遍历的同时也被迫的要限制做很多的处理,限制我们的扩展!
这里就介绍如何放弃GsonConverterFactory,直接返回String,扩展我们的封装!(封装的整体思想和之前的封装一样,所以不会有大的改动!)
##效果
![Preview](https://github.com/wzgiceman/RxjavaRetrofitDemo-string-master/blob/master/gif/retrofit_string.gif)
##功能
1.Retrofit+Rxjava+okhttp基本使用方法
2.统一处理请求数据格式
3.统一的ProgressDialog和回调Subscriber处理
4.取消http请求
5.预处理http请求
6.返回数据的统一判断
7.失败后的retry处理
8.RxLifecycle管理生命周期,防止泄露
9.文件上传下载(支持多文件,断点续传)
10.Cache数据持久化和数据库(greenDao)两种缓存机制
##添加相关引用
```java
/*rx-android-java*/
compile 'io.reactivex:rxjava:+'
compile 'com.squareup.retrofit:adapter-rxjava:+'
compile 'com.trello:rxlifecycle:+'
compile 'com.trello:rxlifecycle-components:+'
/*rotrofit*/
compile 'com.squareup.retrofit2:retrofit:+'
compile 'com.squareup.retrofit2:adapter-rxjava:+'
compile 'com.squareup.retrofit2:converter-scalars:+'
compile 'com.alibaba:fastjson:+'
```
##代码使用
###1.初始化HttpManager
需要传递一个回调HttpOnNextListener接口和activity生命周期
```java
HttpManager manager=new HttpManager(this,this);
```
###2.初始请求的数据和参数
```java
public class SubjectPostApi extends BaseApi {
// 接口需要传入的参数 可自定义不同类型
private boolean all;
/*任何你先要传递的参数*/
// String xxxxx;
/**
* 默认初始化需要给定回调和rx周期类
* 可以额外设置请求设置加载框显示,回调等(可扩展)
*/
public SubjectPostApi() {
setShowProgress(true);
setCancel(true);
setCache(true);
setMothed("AppFiftyToneGraph/videoLink");
setCookieNetWorkTime(60);
setCookieNoNetWorkTime(24*60*60);
}
}
```
###请求后的统一处理
通过method参数判断接口,然后动态解析返回的数据
```java
@Override
public void onNext(String resulte, String method) {
/*post返回处理*/
if(method.equals(postEntity.getMothed())){
List<SubjectResulte> subjectResulte= JSONObject.parseArray(resulte,SubjectResulte.class);
tvMsg.setText("post返回:\n"+subjectResulte.toString() );
}
/*上传返回处理*/
if(method.equals(uplaodApi.getMothed())){
UploadResulte uploadResulte=JSONObject.parseObject(resulte,UploadResulte.class);
tvMsg.setText("上传成功返回:\n"+uploadResulte.getHeadImgUrl());
Glide.with(MainActivity.this).load(uploadResulte.getHeadImgUrl()).skipMemoryCache(true).into(img);
}
}
@Override
public void onError(Throwable e) {
tvMsg.setText("失败:\n" + e.toString());
}
```
* 初始化一个请求数据的对象继承BaseApi对象设置请求需要的参数
* 通过httpmanger对象,触发请求
* 结果统一通过BaseApi中的fun1方法判断,最后返回HttpOnNextListener
##优化迭代
根据反馈及时更新和优化的过程,如果在使用过程中有任何问题,欢迎反馈给我!
##思路
详细思路可以可以参看我的博客:
[Rxjava+ReTrofit+okHttp深入浅出-终极封装](http://blog.csdn.net/column/details/13297.html)
**如有帮助,欢迎start和follow后续会出更多好的开源技术**
没有合适的资源?快使用搜索试试~ 我知道了~
Rxjava+ReTrofit+okHttp深入浅出-终极封装特殊篇(替换Gson返回)
共1569个文件
xml:535个
png:498个
class:236个
4星 · 超过85%的资源 需积分: 21 74 下载量 42 浏览量
2016-11-11
16:27:17
上传
评论 1
收藏 23.26MB 7Z 举报
温馨提示
1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一的ProgressDialog和回调Subscriber处理 4.取消http请求 5.预处理http请求 6.返回数据的统一判断 7.失败后的retry处理 8.RxLifecycle管理生命周期,防止泄露 9.文件上传下载(支持多文件,断点续传) 10.Cache数据持久化和数据库(greenDao)两种缓存机制
资源推荐
资源详情
资源评论
收起资源包目录
Rxjava+ReTrofit+okHttp深入浅出-终极封装特殊篇(替换Gson返回) (1569个子文件)
MediaSessionCompat.aidl 787B
ParcelableVolumeInfo.aidl 689B
PlaybackStateCompat.aidl 688B
MediaMetadataCompat.aidl 680B
ResultReceiver.aidl 675B
RatingCompat.aidl 673B
resources-debug.ap_ 528KB
resources-debug-androidTest.ap_ 766B
app-debug.apk 2.55MB
app-debug-unaligned.apk 2.55MB
gradlew.bat 2KB
fileSnapshots.bin 1.22MB
fileHashes.bin 152KB
taskArtifacts.bin 71KB
outputFileStates.bin 20KB
R$styleable.class 24KB
R$styleable.class 24KB
R$styleable.class 22KB
R$styleable.class 22KB
R$style.class 22KB
R$style.class 22KB
R$styleable.class 22KB
R$styleable.class 22KB
R$style.class 21KB
R$style.class 21KB
R$style.class 20KB
R$style.class 20KB
R$attr.class 10KB
R$attr.class 10KB
R$attr.class 9KB
R$attr.class 9KB
R$attr.class 9KB
R$attr.class 9KB
HttpDownManager.class 7KB
HttpDownManager.class 7KB
ProgressSubscriber.class 7KB
ProgressSubscriber.class 7KB
DownInfoDao.class 7KB
DownInfoDao.class 7KB
CookieResulteDao.class 6KB
CookieResulteDao.class 6KB
MainActivity.class 6KB
MainActivity.class 6KB
R$dimen.class 6KB
R$dimen.class 6KB
R$styleable.class 6KB
R$styleable.class 6KB
R$dimen.class 6KB
R$dimen.class 6KB
R$drawable.class 5KB
R$drawable.class 5KB
R$drawable.class 5KB
R$drawable.class 5KB
R$id.class 5KB
R$id.class 5KB
R$dimen.class 5KB
R$dimen.class 5KB
R$style.class 5KB
R$style.class 5KB
R$attr.class 5KB
R$attr.class 5KB
DbUtil.class 5KB
DbUtil.class 5KB
HttpManager.class 5KB
HttpManager.class 5KB
R$color.class 5KB
R$color.class 5KB
CookieDbUtil.class 5KB
CookieDbUtil.class 5KB
R$color.class 5KB
R$color.class 5KB
R$drawable.class 4KB
R$drawable.class 4KB
R$color.class 4KB
R$color.class 4KB
R$id.class 4KB
R$id.class 4KB
ProgressDownSubscriber.class 4KB
ProgressDownSubscriber.class 4KB
DownHolder.class 4KB
DownHolder.class 4KB
DownLaodActivity.class 4KB
DownLaodActivity.class 4KB
BaseApi.class 4KB
BaseApi.class 4KB
R$id.class 4KB
R$id.class 4KB
DownInfo.class 4KB
DownInfo.class 4KB
AppUtil.class 4KB
AppUtil.class 4KB
DaoMaster.class 3KB
DaoMaster.class 3KB
R$layout.class 3KB
R$layout.class 3KB
ProgressSubscriber$2.class 3KB
ProgressSubscriber$2.class 3KB
DownHolder$1.class 3KB
DownHolder$1.class 3KB
R$layout.class 3KB
共 1569 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16
longkehuawei
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页