针对Kalle网络请求框架进行扩展
主要新增特性
同时完全不影响Kalle的特性
project of build.gradle
allprojects {
repositories {
// ...
maven { url 'https://jitpack.io' }
}
}
module of build.gradle
implementation 'com.github.liangjingkanji:Net:1.1.2'
Post
post<Model>(""){
param("key", "value")
}.net {
}
Model
即JSONBean或者说POJO 数据模型, 会将服务器返回的JSON解析成该数据模型在net
回调中可以使用it
调用
Get
get<Model>(""){
param("key", "value")
}.net {
}
Model
泛型如果换成String, 将会在成功回调中得到字符串对象.
文件上传
post<Model>(""){
file("file", File("path"))
}.net {
}
这是支持Kalle任何参数添加方式
文件下载
download("/path", "下载目录"){
// 进度监听
onProgress { progress, byteCount, speed ->
}
}.dialog(this){
}
将Fragment或者Activity作为参数传递即可在页面关闭时自动取消订阅, 避免操作已销毁视图.
post<Model>(""){
param("key", "value")
}.net(activity) {
}
其他的对话框或者缺省页和下拉刷新等自动支持生命周期管理
将会在网络请求开始时弹出对话框, 结束时关闭对话框.
post<Model>(""){
file("file", File("path"))
}.dialog(this) {
}
自定义对话框
fun <M> Observable<M>.dialog(
activity: FragmentActivity,
dialog: Dialog = ProgressDialog(activity),
cancelable: Boolean = true,
block: (DialogObserver<M>.(M) -> Unit)? = null
)
cancelable
决定对话框是否可以点击用户关闭dialog
传入自定义对话框对话框关闭会导致网络请求被取消订阅
需要引入第三方库: BRV
post<Model>(""){
file("file", File("path"))
}.page(page) {
}
需要引入第三方库: StateLayout (如果已经引入BRV可以不再引入)
post<Model>(""){
param("key", "value")
}.state(stateLayout) {
}
关于state
函数支持参数类型有如下:
会根据参数的不同而给不同的对象添加缺省页状态