Android开发 retrofit入门讲解 (RxJava模式)

前言

  retrofit除了正常使用以外,还支持RxJava的模式来使用,此篇博客讲解如何使用RxJava模式下的retrofit

依赖

    implementation 'com.squareup.retrofit2:retrofit:2.6.2'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
    //多了三个需要依赖的RxJava
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' //提供 AndroidSchedulers.mainThread()

 

简单的Demo

  创建接口类

public interface RxHttpList {
    
    @FormUrlEncoded
    @POST("test/login_test")
    Observable<LoginBean> login(@Field("number") String number, @Field("password") String password);
}

  创建Retrofit

    private void initRxHttpBase() {
        mRetrofit = new Retrofit.Builder()
                .baseUrl("http://doclever.cn:8090/mock/5c3c6da33dce46264b24452b/")
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

  请求网络

private void rxPostHttp() {
        RxHttpList rxHttpList = mRetrofit.create(RxHttpList.class);
        Observable<LoginBean> observable = rxHttpList.login("13113", "1131311");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(LoginBean loginBean) {
                        Log.e(TAG, "onNext: 请求成功 code=" + loginBean.getCode());
                        Log.e(TAG, "onNext: 请求成功 message=" + loginBean.getMessage());

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
        
    }

RxJava模式下的取消网络请求

 private void rxPostHttp() {
        RxHttpList rxHttpList = mRetrofit.create(RxHttpList.class);
        Observable<LoginBean> observable = rxHttpList.login("13113", "1131311");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<LoginBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        //把Disposable引用到全局就可以用来取消网络请求
//                        d.dispose();//取消网络请求

                    }

                    //略......
                });

    }

 

 

 

 

end

posted on 2019-09-29 17:01  观心静 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/guanxinjing/p/11608810.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值