Android Retrofit+Rxjava实现网络请求(Retrofit如何结合Rxjava)

前言

Retrofit和Rxjava单独使用的文章可以看本人写的这两篇,本文是在Retrofit网络请求框架这篇文章的项目上改动的。
Android Retrofit网络请求框架
Android RxJava3入门

操作

添加依赖

    //retrofit与Rxjava3结合
    implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'

在这里插入图片描述

修改接口管理器

在Retrofit中添加

addCallAdapterFactory(RxJava3CallAdapterFactory.create())//支持RxJava

在这里插入图片描述

修改接口

在写接口之前,我们先看看接口返回的数据
https://api.uomg.com/api/rand.music?sort=热歌榜&format=json
在这里插入图片描述
可以看见这个接口外面还有嵌套一层,所以需要写一个数据包裹类把数据再包一层

/**
 * 数据包裹层
 */
public class ResponseBean<T>  {

    /** 失败 */
    public static final int Fail = 500;
    /** 成功 */
    public static final int SUCCESS = 200;

    /** 本次接口请求返回的状态 */
    public int code = Fail;
    /** 对code的简单描述 */
    public String msg = "";
    /** 数据对象 */
    public T data;

    public boolean isSuccess() {
        return code == SUCCESS;
    }

}

然后开始写接口

    //获取网易云音乐随机歌曲
    @GET("api/rand.music")
    Observable<ResponseBean<MusicBean>> getMusicData(@Query("sort") String sort, @Query("format") String format);

在这里插入图片描述
可以看见,Retrofit+Rxjava就是把原来Retrofit的Call改成了Observable

访问

    private void getMusicData() {
        ApiServiceManager.get().create(ApiService.class)
                .getMusicData("热歌榜", "json")
                .subscribeOn(Schedulers.io())//在子线程中进行Http访问
                .observeOn(AndroidSchedulers.mainThread())//UI线程处理返回接口
                .subscribe(new Observer<ResponseBean<MusicBean>>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {

                    }

                    @Override
                    public void onNext(@NonNull ResponseBean<MusicBean> musicBeanResponseBean) {
                        mBinding.contentTv.setText(musicBeanResponseBean.data.name + " " + musicBeanResponseBean.data.artistsname);

                    }

                    @Override
                    public void onError(@NonNull Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }

使用Rxjava主要是要做好线程的调度

运行结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值