您当前的位置: 首页 >  网络

蓝不蓝编程

暂无认证

  • 2浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

RxJava+Retrofit实现网络请求

蓝不蓝编程 发布时间:2019-04-09 15:04:15 ,浏览量:2

简要介绍

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() {
                    }
                })
    }
}
网络请求结果截图

Demo源代码

https://github.com/cxyzy1/rxjava_retrofit_demo

安卓开发技术分享: https://blog.csdn.net/yinxing2008/article/details/84555061 点击关注专栏,查看最新技术分享 更多技术总结好文,请关注:「程序园中猿」

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0407s