一,安装第三方库
build.gradle.kts中添加
implementation("com.squareup.retrofit2:retrofit:2.9.0")implementation("com.squareup.retrofit2:converter-gson:2.9.0")implementation("com.google.code.gson:gson:2.13.0")
然后点击:Sync Now 链接
二,代码:
json.php
接口model类
package com.example.okdemo2.netimport androidx.annotation.Keep
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.Serializable//@InternalSerializationApi
/*** 请求返回的BasicResponse 可以自己重新实现*/@Keep
@Serializable
open class ApiResponse<T>(open var data: T? = null,open var code: Int = -1,open var msg: String = "",open var status: String? = null,open var time: String? = null,
) {val isSuccess: Booleanget() = code == 200}
数据model类
package com.example.okdemo2.fragment//import com.google.gson.annotations.
//import com.google.gson.annotations.SerializedName
//import java.io.Serializable
import androidx.annotation.Keep
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable@Keep
@Serializable
data class UserList(@SerialName("list")val `list`: MutableList<UserListItem>,@SerialName("curPage")val curPage: Int,@SerialName("total")val total: Int,@SerialName("totalPage")val totalPage: Int,@SerialName("token")val token: String,
)@Keep
@Serializable
data class UserListItem(@SerialName("id")val id: Int,@SerialName("name")val name: String,@SerialName("image")val image: String,
)
接口列表:
package com.example.okdemo2.fragmentimport com.example.okdemo2.net.ApiResponse
import retrofit2.http.GET
import retrofit2.http.QueryMapinterface ApiService {@GET("/json.php")suspend fun userList(@QueryMap map: MutableMap<String, Any>): ApiResponse<UserList>
}
调用retrofit访问接口
//按钮点击binding.getJsonButton.setOnClickListener {println("按钮被点击了")val retrofit = Retrofit.Builder().baseUrl("http://www.nihonnoma.net").addConverterFactory(GsonConverterFactory.create()).build()val appService = retrofit.create(ApiService::class.java)lifecycleScope.launch {//参数val params = mutableMapOf<String, Any>("p" to 1,"count" to 20,"token" to "王富贵到此一游")//访问接口val user = appService.userList(params)println(user)if (user.status == "success") {println("成功")println(user.data)println("当前页:"+user.data?.curPage)println("当前用户:"+user.data?.token)println(user.data?.list)} else {println("失败")println("错误代码:"+user.code)println("错误信息:"+user.msg)}}}