Android Studio接口對接部署

1.配置請求BaseUrl地址

建立BaseHelper.kt

object RetrofitInstance {
    private const val BASE_URL = "https://xxxxxxx.com/"
    val retrofit: Retrofit = Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(CoroutineCallAdapterFactory())
        .build()
    val apiService: ApiService = retrofit.create(ApiService::class.java)
}

2.部署請求接口地址

ApiService.kt

interface ApiService {
    //登錄接口
    @POST("/api/Login.aspx)
    @Headers("Content-Type:application/json")
    suspend fun getLogin(@Body model: LoginModel?): LoginResult

}

3.建立請求類

LoginModel.kt

class  LoginModel{
    var userid:String= ""
    var password:String= ""
}

4.建立ViewModel,視圖UI和模型數(shù)據(jù)之間的媒介

class LoginVM: ViewModel() {
    private val LoginRepo = LoginRepo()
     var loginInfo: LoginResult? = LoginResult()
     suspend fun getLogin(model: LoginModel) {
         try {
             loginInfo = withContext(Dispatchers.IO) {
                 LoginRepo.getLogin(model).invoke()
             }
             Log.d("接口對接:", loginInfo!!.Status)
         } catch (e: Exception) {
             Log.d("錯誤:1111111", e.toString())
         }
     }
}

5.UI界面請求寫法

CoroutineScope(Dispatchers.Main) 通常用于確保協(xié)程中的代碼在主線程上執(zhí)行

Dispatchers.IO 是一個預(yù)定義的調(diào)度器,用于執(zhí)行可能阻塞 I/O 的任務(wù)。它旨在優(yōu)化 I/O 操作的性能,通過減少線程之間的上下文切換,并允許在等待 I/O 操作完成時釋放線程。

withContext 函數(shù)用于切換協(xié)程的上下文,包括調(diào)度器。當(dāng)你調(diào)用 withContext(Dispatchers.IO) 時,它會掛起當(dāng)前協(xié)程,將其移動到 Dispatchers.IO 調(diào)度器的線程池中,然后在該線程池中恢復(fù)協(xié)程的執(zhí)行。

private fun Login() {
        //賬號密碼
        val Info = LoginModel()
        Info.userid=binding.edUserId.text.toString().trim()
        Info.password=binding.edPassword.text.toString().trim()
        CoroutineScope(Dispatchers.Main).launch {
            withContext(Dispatchers.IO) {
                Log.d("登錄賬號密碼", "Login: " + Info.userid + Info.password)
                //請求接口獲取數(shù)據(jù)
                viewModel.getLogin(Info)
                updateLoginUI(Info) // 使用獲取的數(shù)據(jù)來更新UI

            }
        };

    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容