• 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

  • 相关阅读:
    Python进制转换
    Python matplotlib笔记
    Python Numpy,Pandas基础笔记
    Android调用WebService
    逻辑回归 Logistic Regression
    奇异值分解 SVD
    Laravel 队列不执行的原因,job缓存
    Vim使用技巧(0) -- 博主的vim配置
    Vim使用技巧(5) -- 宏的录制与使用
    linux crontab 鉴定令牌不再有效,需要新的鉴定令牌 [ You (root) are not allowed to access to (crontab) because of pam configuration.]
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/11608810.html
Copyright © 2020-2023  润新知