Retrofit2.0(二)结合Rxjava2使用
Rxjava2 学习参考:
http://blog.youkuaiyun.com/weixin_37577039/article/details/78555208
Retrofit2 学习参考:
http://blog.youkuaiyun.com/weixin_37577039/article/details/78546591
配置
//retrofit2
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//okhttp
compile 'com.squareup.okhttp3:okhttp:3.9.0'
// Log信息拦截器
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
//Gson converter
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
//RxJava2 Adapter
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//rxandroid2
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
使用
1 将 api接口的Call 改为 Observable形式
并且导入的包为 :import io.reactivex.Observable;
@GET("XXX")
Observable<ZhanDouTaiBean> getZhanDouTaiData();
2 接口调用部分也改Call为Observable
Observable<ZhanDouTaiBean> observable = service.getZhanDouTaiData();
3 call.enqueue方式 改成Rxjava的方式
// RXJAVA实现
observable.subscribeOn(Schedulers.io()) //在IO线程进行网络请求
.observeOn(AndroidSchedulers.mainThread()) //回到主线程去处理请求结果
.subscribe(new Observer<ZhanDouTaiBean>() {
@Override
// 连接成功了就会执行
public void onSubscribe(Disposable d) {
Log.i("subscribe is ok","subscribe is ok" );
}
@Override
public void onNext(ZhanDouTaiBean zhanDouTaiBean) {
Log.i("onNextIsWork","onNext");
int a = zhanDouTaiBean.getData().getCollectionTotal();
Log.i("aaa", String.valueOf(a));
}
@Override
public void onError(Throwable e) {
Log.i("API调用失败","API调用失败");
Toast.makeText(MainActivity.this, "API调用失败", Toast.LENGTH_SHORT).show();
}
//上游不写complete 成功返回也会自动执行
@Override
public void onComplete() {
Log.i("API调用成功","API调用成功");
Toast.makeText(MainActivity.this, "API调用成功", Toast.LENGTH_SHORT).show();
}
});
4 Retrofit对象创建的链式操作中加
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
若使用的是Observable< Bean >形式的,要获取 回传的完整JSON数据,可以:
1 通过 Observable< ResponseBody > 形式
但是得自己创建Gson 创建Bean 去解析数据
2 推荐 通过拦截器设置
参考下一篇:http://blog.youkuaiyun.com/weixin_37577039/article/details/79495797
若 AndroidSchedulers 报错 还要记得导入 Rxandroid 的包
Retrofit相关配置,如 超时设置,加 请求头,加公共请求参数,加拦截器等,参考:
http://blog.youkuaiyun.com/weixin_37577039/article/details/79495797