概述
一、 引入依赖
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 协程 最简单的使用(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复