查看: 98|回覆: 0

[教程] Android开发(Kotlin) retrofit基本使用教程

[複製鏈接]

3

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-8-20
發表於 2025-11-17 10:28:49 | 顯示全部樓層 |閲讀模式

导入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的使用及简单实例
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部