RxJava+Retrofit实现网络请求

简要介绍

Retrofit是当前应用非常广泛的网络请求框架,通常结合RxJava来进行网络请求,本文将展示一个采用RxJava+Retrofit的网络请求demo.若想了解Coroutines+Retrofit,可参考《Coroutines+Retrofit实现网络请求》

集成步骤

  1. app工程的build.gradle中添加依赖
//retrofit2
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.2'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'

//rxjava2
implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'

//配合Rxjava2 使用
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
  1. 在AndroidManifest.xml中添加权限

  1. 添加数据类Task
    data class Task(var id: Int, var name: String?)
  2. 添加网络请求类NetworkService
interface NetworkService {

    @GET("cxyzy1/rxjava_retrofit_demo/master/data.json")
    fun query(): Observable
}
  1. activity中调用
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        queryData()
    }

    private fun queryData() {
        val retrofit = Retrofit.Builder()
                .baseUrl("https://raw.githubusercontent.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build()

        val networkService = retrofit.create(NetworkService::class.java)

        networkService.query()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(object : Observer {
                    override fun onSubscribe(d: Disposable) {
                    }

                    override fun onNext(task: Task) {
                        contentTv.text = task.toString()
                    }

                    override fun onError(e: Throwable) {
                        Log.v("", e.message)
                    }

                    override fun onComplete() {
                    }
                })
    }
}

网络请求结果截图

RxJava+Retrofit实现网络请求_第1张图片

Demo源代码

https://github.com/cxyzy1/rxjava_retrofit_demo

安卓开发技术分享: https://www.jianshu.com/p/442339952f26
点击关注专辑,查看最新技术分享
更多技术总结好文,请关注:「程序园中猿」

RxJava+Retrofit实现网络请求_第2张图片

你可能感兴趣的:(RxJava+Retrofit实现网络请求)