系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 系统教程 > 其它教程 > 详细页面

Android使用 Coroutine + Retrofit打造简单的HTTP请求库

时间:2021-03-27来源:www.pcxitongcheng.com作者:电脑系统城

基于 kotlin/coroutine/retrofit/jetpack 打造,100来行代码,用法超级简单舒适

设置默认Retrofit工厂和全局错误处理程序

1
2
3
4
5
HttpCall.init(retrofitFactory = {
  // ...
}, errorHandler = { throwable ->
  // ...
})

基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
data class Reault(val data:String)
 
interface TestService {
  @GET("test")
  fun test(): Call<Reault>
}
 
// 在 activity/fragment 中使用,获取请求结果
http<TestService>().test().result(this) {
  // it 是 Reault
}
 
// 在 activity/fragment 中使用,获取请求响应对象
http<TestService>().test().response(this) {
  // it 是 Response<Result>
}

显示请求状态,基于 HttpCall扩展出 withSpinning 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fun <T : Any> HttpCall<T>.withSpinning(activity: FragmentActivity, spinning: Boolean = false, text: String = ""): HttpCall<T> {
  activity.apply {
    if (isFinishing || isDestroyed) return@apply
    val dialog = showLoading(spinning, text)
 
    finally { dialog.dismiss() }
  }
  return this
}
 
 
http<TestService>().test().result(this) {
  Log.e("api", it.data)
}.withSpinning(this)

引入

https://github.com/czy1121/httpcall

1
2
3
4
5
6
repositories {
  maven { url "https://gitee.com/ezy/repo/raw/android_public/"}
}
dependencies {
  implementation "me.reezy.jetpack:httpcall:0.4.0"
}
分享到:

相关信息

  • ThinkPad蓝牙鼠标如何配对

    ThinkPad蓝牙鼠标如何配对解答步骤41U5008鼠标驱动官网地址: https://support.lenovo.com/en_US/downloads/detail.page?&LegacyDocID=MIGR-67201 第一种方式是比较传统的:使...

    2024-04-11

  • USB接口无法识别设备的解决方法

    故障现象: USB设备U盘、移动硬盘等插入后提示无法识别的设备,确认设备本身正常,设备可加电,或插入设备后加电但无任何反应,无法使用。新型号机器多表现为黄色USB接口存在此问题,...

    2024-04-11

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载