• 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

  • 相关阅读:
    Android设计中的.9.png图片
    Socket原理
    word2vec中文类似词计算和聚类的使用说明及c语言源代码
    Scala之集合Collection
    使用C语言调用mysql数据库编程实战以及技巧
    Web学习篇之---html基础知识(一)
    μCOS-II系统之事件(event)的使用规则及Semaphore实例
    activiti自己定义流程之Spring整合activiti-modeler实例(一):环境搭建
    将ASP.NET用户控件转化为自定义控件
    【C#】Excel导出合并行和列并动态加载行与列
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/11608810.html
Copyright © 2020-2023  润新知