sloth-restme

Introduction: 基于 coroutines 和 okhttp 的 http 请求库,多请求链式调用取消请求等
More: Author   ReportBugs   
Tags:

基于 coroutines 和 okhttp 的 http 请求库,多请求链式调用取消请求等

1.集成

compile 'com.stainberg.sloth:sloth-http:1.0.4'

2.使用

缓存的开启由 2 个地方控制

  • 初始化缓存目录
  • 请求中需要调用 cache 方法
//开启缓存策略
//初始化缓存
SlothClient.initCache(directory, 50)//缓存在指定目录下
SlothClient.initCache(context, 50)//缓存在外部存储区的 cache 目录中
//订阅 404 请求的处理逻辑
SlothClient.subscribeHttpCodeHandler(404, {
 //it 参数是 Request 请求对象
      println("${it.url()} handler 404")
    })
//设定请求通用参数和头
SlothClient.fixHeader("123", "321")
SlothClient.fixParam("abc", "cba")
//内部 debug 日志打印,默认为 false
SlothLogger.isDebug = true
//发起一个网络请求,可以根据需要写 onSuccess,onFailed 和 onCompleted
//onSuccess 中的 it 为 ABC 对象,一定不为空
//onFailed 为错误信息
//onCompleted 为请求结束的回调闭包
//重点说明:onSuccess 和 onFailed 可以选择回调在主线程或者是工作协程中,onCompleted 一定回调在非主线程
//单请求例子
SlothClient.request("http://192.168.75.36:1234/read").param("ids", SlothGson.toJson(arr)).tag("123").cache(page < 10)//开启缓存
    .onSuccess(ABC::class.java, {
        println("onSuccess ${SlothGson.toJson(it)}")
    })
    .onFailed {code, message->
        println("onFailed Code = $code message = $message")
    }
    .onCompleted {
        println("onCompleted")
        println(Thread.currentThread().id)
    }
    .get()
//链式请求例子
//start 参数中的闭包为链式调用结束以后执行,在非主线程中执行
//链式调用请求请使用 xxSync 系列方法,可以参阅源码
//请求中的 onSuccess,onFailed 和 onCompleted 同单请求模型
//xxSync 函数中的参数为 onSuccess 和 onFailed 是否在主线程或者是后台协程中执行,默认为主线程
//onCompleted 闭包中有一个取消链式请求的函数 cancelRemainderTasks(),该函数执行以后,整个 Set 将立即结束
//cancelRemainderTasks()后面的请求将不会得到执行
SlothClient.requestSet(
    SlothClient.request("http://192.168.75.36:1234/read/d").param("ids", "1")
        .onSuccess(ABC::class.java, {
            println("onSuccess ${SlothGson.toJson(it)}")
        })
        .onFailed {code, message->
            println("onFailed Code = $code message = $message")
        }
        .onCompleted {
            println("onCompleted")
            println(Thread.currentThread().id)
        }
        .getSync(SlothHandleType.background),
    SlothClient.request("http://192.168.75.36:1234/read").param("ids", "2")
        .onSuccess(ABC::class.java, {
            println("onSuccess ${SlothGson.toJson(it)}")
        })
        .onFailed {code, message->
            println("onFailed Code = $code message = $message")
        }
        .onCompleted {
            println("onCompleted")
            println(Thread.currentThread().id)
            cancelRemainderTasks()
        }
        .getSync(),
    SlothClient.request("http://192.168.75.36:1234/read").param("ids", "3")
        .onSuccess(ABC::class.java, {
            println("onSuccess ${SlothGson.toJson(it)}")
        })
        .onFailed {code, message->
            println("onFailed Code = $code message = $message")
        }
        .onCompleted {
            println("onCompleted")
            println(Thread.currentThread().id)
        }
        .getSync()
    ).start({
      println("set end")
    })

如有疑问请留言

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools