Retrofit2.0(二)结合Rxjava2使用

本文介绍如何在Android应用中将Retrofit2与RxJava2相结合,实现更高效的网络请求处理。通过示例代码展示如何配置依赖、修改API接口及调用方式,并提供错误处理和响应数据解析的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值