Android Studio接口对接部署

1.配置请求BaseUrl地址

建立BaseHelper.kt

1
2
3
4
5
6
7
8
9
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和模型数据之间的媒介

复制代码
 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) 通常用于确保协程中的代码在主线程上执行

Dispatchers.IO 是一个预定义的调度器,用于执行可能阻塞 I/O 的任务。它旨在优化 I/O 操作的性能,通过减少线程之间的上下文切换,并允许在等待 I/O 操作完成时释放线程。

withContext 函数用于切换协程的上下文,包括调度器。当你调用 withContext(Dispatchers.IO) 时,它会挂起当前协程,将其移动到 Dispatchers.IO 调度器的线程池中,然后在该线程池中恢复协程的执行。

复制代码
    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)
                //请求接口获取数据
                viewModel.getLogin(Info)
                updateLoginUI(Info) // 使用获取的数据来更新UI

            }
        };

    }
复制代码

 

posted @   一招致命九虎山  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示