安卓:Retrofit与RxJAVA做一个简单的Get请求

首先导入依赖:
RxJava:原理 基于 一种扩展的观察者模式
被观察者 (Observable) 通过 订阅(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 以及作出对应的响应动作

implementation'io.reactivex.rxjava2:rxjava:2.2.8'
implementation'io.reactivex.rxjava2:rxandroid:2.1.0'

Retrofit:
Retrofit 是一个 Restful 的 http 网络请求框架的封装,网络请求的工作本质上是 Okhttp 完成,而 Retrofit 仅负责 网络请求接口的封装

//Retrofit依赖
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    //Gson converter gson解析
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

    //RxJava2 Adapter
    implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
    /okhttp
    implementation 'com.squareup.okhttp3:okhttp:3.4.1'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'

下面开始做一个Get的网络请求:

//RxJava写一个接口
interface Rx_Api {
    @GET("index_data.json")
    //被观察者
    fun ob():Observable
}
//Retrofit准备工作
class MyRetrofit{
      var retrofit: Retrofit?=null
         get() {
         //创建一个Client
        val okHttpClient = OkHttpClient()
        return Retrofit.Builder().client(okHttpClient)//创建一个Retrofit  并且放入一个Client
            .baseUrl("http://mock.fulingjie.com/mock-android/data/")//URL
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//Rx的适配器
            .addConverterFactory(GsonConverterFactory.create())//Gson的适配器
            .build()//构建
    }
}

请求数据:

 MyRetrofit().retrofit!!.create(Rx_Api::class.java)
            .ob()//被观察者
            .subscribeOn(Schedulers.io())//在io线程
            .observeOn(AndroidSchedulers.mainThread())//观察者在主线程
            .subscribe(object : Observer {//订阅
                override fun onComplete() {
                }

                override fun onSubscribe(d: Disposable) {
                }
                //请求的数据
                override fun onNext(t: Re_bean) { 
                }
                //错误信息
                override fun onError(e: Throwable) {
                    print(e.toString())
                }
            })

你可能感兴趣的:(安卓:Retrofit与RxJAVA做一个简单的Get请求)