我是靠谱客的博主 曾经毛衣,最近开发中收集的这篇文章主要介绍Kotlin retrofit 协程 最简单的使用(一),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、 引入依赖
1、retrofit依赖
2、gosn转换依赖
3、网络日志依赖
4、协程依赖
代码如下:

implementation 'com.squareup.retrofit2:retrofit:2.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0"

二、建立数据类
1、在setting plugins 中找到 JSON To Kotlin Class 插件,安装
插件
2、再kotlin 类文件中
直接使用 Alt+K 或者使用Alt+Insert 选择 如下
使用插件
进入数据类
生成如下效果:
类图

三、编写接口文档
1、不使用协程
需要返回一个Call对象使用

interface IApiServices {
    @GET("getHealthCare")
      fun getAllHealthData(@Query("userId") userId: String):Call<AllHealthBean>
}

2、使用协程
直接返回数据类对象

interface IApiServices {
    @GET("getHealthCare")
  suspend  fun getAllHealthData(@Query("userId") userId: String):AllHealthBean
}

四、初始化retrofit

object API {

    val httpBuilder: OkHttpClient.Builder get() {
        // create http client
        val httpClient = OkHttpClient.Builder()
            .addInterceptor(Interceptor { chain ->
                val original = chain.request()

                //header
                val request = original.newBuilder()
                    .header("Accept", "application/json")
                    .method(original.method(), original.body())
                    .build()

                return@Interceptor chain.proceed(request)
            })
            .readTimeout(30, TimeUnit.SECONDS)

        // log interceptor
        val loggingInterceptor = HttpLoggingInterceptor()
        loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
        httpClient.addInterceptor(loggingInterceptor)

        return httpClient
    }

    // core for controller
    val service: IApiServices = create(IApiServices::class.java)

    lateinit var retrofit: Retrofit

    fun <S> create(serviceClass: Class<S>): S {
        val gson = GsonBuilder()
            .serializeNulls()
            .create()

        // create retrofit
        retrofit = Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .baseUrl("www") // Put your base URL
            .client(httpBuilder.build())
            .build()

        return retrofit.create(serviceClass)
    }



}

五、使用
1、不使用用协程

 API.service.getAllHealthData("").enqueue(object : Callback<AllHealthBean?> {
        override fun onResponse(
            call: Call<AllHealthBean?>,
            response: Response<AllHealthBean?>
        ) {
            Log.e(TAG, "onResponse: ${response.body()}" )
        }

        override fun onFailure(call: Call<AllHealthBean?>, t: Throwable) {}
    })

2、使用协程

 GlobalScope.launch(Dispatchers.Main){

        try {
            val allHealthBean=API.service.getAllHealthData("")
            Log.e(TAG, "launch initRetrofit: ${allHealthBean.toString()}" )
        }catch (e:Exception){
            Log.e(TAG, "initRetrofit: ${e.toString()}" )
        }
    }

最后

以上就是曾经毛衣为你收集整理的Kotlin retrofit 协程 最简单的使用(一)的全部内容,希望文章能够帮你解决Kotlin retrofit 协程 最简单的使用(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部