|
导入retrofit
dependencies {
........
implementation("com.squareup.retrofit2:retrofit:3.0.0")
implementation("com.squareup.retrofit2:converter-gson:3.0.0")
}
创建单例类
object ServiceCreator {
private const val BASE_URL = "https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io"
private val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
fun <T> create(serviceClass: Class<T>): T = retrofit.create(serviceClass)
}
创建数据类 数据格式
{
"data": [
{
"random": "3",
"def": "中止,停顿;归属待定,暂搁",
"word": "abeyance"
}
]
}
data class WordListBean(val data: List<WordBean>)
data class WordBean(val random: String, val def: String, val word: String)
配置接口
interface AppService {
@GET("/flutter")
fun getData(): Call<WordListBean>
}
调用网络接口
binding.clickButC.setOnClickListener {
val appService = ServiceCreator.create(AppService::class.java)
appService.getData().enqueue(object : Callback<WordListBean>{
override fun onResponse(call: Call<WordListBean?>, response: Response<WordListBean?>) {
Log.d("ClickActivity",response.body().toString())
}
override fun onFailure(call: Call<WordListBean?>, t: Throwable) {
Log.d("ClickActivity",t.toString())
}
})
}
打印结果
2025-11-15 01:07:28.592 23340-23340 ClickActivity com.bz.yh.xd.testkotlin D WordListBean(data=[WordBean(random=0, def=抛弃,遗弃;中止;陷入,沉湎于, word=abandon), WordBean(random=1, def=抛弃;放纵, word=abandonment), WordBean(random=2, def=缩略词,缩写形式;缩略, word=abbreviation), WordBean(random=3, def=中止,停顿;归属待定,暂搁, word=abeyance)])
使用实化来优化ServiceCreator
object ServiceCreator {
private const val BASE_URL = "https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io"
private val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
inline fun <reified T> create(): T = create(T::class.java)
}
binding.clickButC.setOnClickListener {
val appService = ServiceCreator.create<AppService>()
appService.getData().enqueue(object : Callback<WordListBean>{
override fun onResponse(call: Call<WordListBean?>, response: Response<WordListBean?>) {
Log.d("ClickActivity",response.body().toString())
}
override fun onFailure(call: Call<WordListBean?>, t: Throwable) {
Log.d("ClickActivity",t.toString())
}
})
}
其他 声明网络权限
<uses-permission android:name="android.permission.INTERNET" />
配置networkSecurityConfig,使用http
<application
.....
android:networkSecurityConfig="@xml/network_security_config">
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
</network-security-config>
到此这篇关于Android开发(Kotlin) retrofit基本使用的文章就介绍到这了,更多相关android kotin retrofit使用内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!
您可能感兴趣的文章:- Android开发Kotlin语言协程的依赖及使用示例
- Kotlin-Android之Activity使用详解
- Android结合kotlin使用coroutine的方法实例
- 在Android中如何使用DataBinding详解(Kotlin)
- Android在Kotlin中更好地使用LitePal
- Android Kotlin环境使用ButterKnife的方法
- 使用Kotlin开发Android应用教程
- Android Kotlin的使用及简单实例
|