Retrofit2+RxJava2实现一个网络请求框架精简封装

今天讲下如何使用Retrofit2+RxJava2实现一个网络请求框架的步骤:
前提准备条件自然要有清单文件别忘记添加网络请求权限:

 <uses-permission android:name="android.permission.INTERNET" />

然后开始真正的代码集成实现步骤:
第一步:首先在build.gradle文件中添加以下依赖:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:3.2.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.3'
    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    }

第二步:在application中初始化Retrofit

class MyApp : Application() {

 override fun onCreate() {
        super.onCreate()
        app = this
        //初始化OkHttp
        okHttpInstance()
        //初始化Retrofit
        RetrofitInstance()

    }


//初始化okhttp    Retrofit
    companion object {

        lateinit var app: MyApp

        var mOkHttpClient: OkHttpClient? = null
        var mRetrofit: Retrofit? = null

        fun okHttpInstance(): OkHttpClient {
            var logInterceptor = HttpLoggingInterceptor((HttpLoggingInterceptor.Logger { message ->
                Log.e("message", message)

            }))
            logInterceptor.level = HttpLoggingInterceptor.Level.BODY


            mOkHttpClient = OkHttpClient().newBuilder()
                    .addNetworkInterceptor(logInterceptor)
                    .build()
            return mOkHttpClient!!
        }


        fun RetrofitInstance(): Retrofit {
            mRetrofit = Retrofit.Builder()
                    .baseUrl(UrlConfig.BASE_URL)
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(mOkHttpClient)
                    .build()

            return mRetrofit!!
        }
    }



}

第三步:建立你的配置全局网络请求Url工具类UrlConfig.kt

class UrlConfig {
    companion object {
        //正式服务器url
        val BASE_URL = "http://mingshiapp.com"
    }

}

第四步:创建你的请求主体类IPServer.kt:

/**
 * @Description:配置网络请求主体业务接口
 * @Author: junjiew
 * @Time:   2018/7/03 14:47
 */
interface IPServer {

    //网络请求测试
    @GET("/test")
    fun getTestData():Observable<QuestionTestData>

}

第五步:在activity中调用关键代码实现:

var bean : TestData? = null

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main)
       //调用网络请求方法
       initData()

    }

//调用网络框架请求
private fun initDatas() {
      var server = MyApp.RetrofitInstance().create(IPServer::class.java)
            server.getTestData()
                    .subscribeOn(Schedulers.newThread())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe({ result ->
                        bean = result as TestData
                        LogUtils.d(TAG,"result:"+result.toString())
                    }, { error ->

                        //Request FAIL
                        LogUtils.d(TAG,"error:"+error.toString())
                    })


    }

到这里Retrofit2+RxJava2实现一个网络请求框架就已经集成完毕了,是不是很简单看起来,哈哈,兄弟,不要大意,开发最可怕的就是你把一个东西看简单了,然后真正实现的时候遇到一个坑自己半天爬不出来,哈哈,这是个老搬砖的一路走过来的经验啊!哈哈

猜你喜欢

转载自blog.csdn.net/wjj1996825/article/details/80904175