欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-09-07 08:54:36
基于 kotlin/coroutine/retrofit/jetpack 打造,100来行代码,用法超级简单舒适设置默认retrofit工厂和全局错误处理程序httpcall.init(retrofi...

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

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

httpcall.init(retrofitfactory = {
  // ...
}, errorhandler = { throwable ->
  // ...
}) 

基本用法

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 方法

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) 

引入

repositories { 
  maven { url "https://gitee.com/ezy/repo/raw/android_public/"}
} 
dependencies {
  implementation "me.reezy.jetpack:httpcall:0.4.0" 
}