Kolley是用 kotlin 实现,结合了Volley和OkHttp的一个RESTful网络请求框架。
repositories {
jcenter()
maven { url "https://jitpack.io" } // for PersistentCookieJar
}
compile 'com.ohmerhe.kolley:kolley:0.3.1'
- 支持 Cookie 持久化储存
- 修复上传中中文乱码的问题
- 支持 Post 请求上传 Raw
- 支持 upload 文件
- 修复请求中没有传递 Header 的bug
初始化一次以后,可以很方便的发起一个网络请求。
Http.init(context)
Http.get {
url = "http://api.openweathermap.org/data/2.5/weather"
onSuccess { bytes ->
// handle data
}
}
可以在params
配置块中使用"key" - "value"
的格式为网络请求置顶参数,每个参数占一行。
Http.get {
...
params {
"q" - "shanghai"
"appid" - "xxxx"
}
...
}
回调也是类似配置的方式
Http.get {
...
onStart { }
onSuccess { bytes ->
// get data
}
onFail { error ->
// handle error
}
onFinish { }
...
}
添加headers
的方式和params
的方式很相似
Http.get {
...
headers {
"Content-Type" - "application/json"
}
...
}
有两种方式可以取消网络请求
Request
对象直接取消
val request = Http.get{...}
...
request.cancel
- 使用
tag
的方式取消
你可以为每个网络请求打上一个tag
,然后通过RequestQueue
取消。
Http.get {
...
tag = mTag
...
}
...
Http.getRequestQueue().cancelAll(tag)
将需要上传的文件添加到 files
下面,参数形式和 params
一直,前面是 key
,后面的 value
是对应文件的路径。
可支持多文件上传。
Http.upload{
url = "http://192.168.199.110:3000"
files {
"image" - $imagePath
}
}
如果上传文件需要带其他参数,也可以和其他网络请求一样添加在 params
下面。
在你的application中直接初始化Image
,
Image.init(context)
或者带上一些配置信息一起初始化
Image.init(this){
// these values are all default value , you do not need specific them if you do not want to custom
memoryCacheEnabled = true
memoryCacheSize = (Runtime.getRuntime().maxMemory() / 8).toInt()
diskCacheDir = File(cacheImagePath)
diskCacheSize = 200 * 1024 * 1024 // default 200m size
diskCacheEnabled = true
compressFormat = Bitmap.CompressFormat.JPEG
compressQuality = 80
}
直接显示图片或者配置化显示
Image.display {
url = "http://7xpox6.com1.z0.glb.clouddn.com/android_bg.jpg"
imageView = mImageView
}
Image.display {
url = "http://7xpox6.com1.z0.glb.clouddn.com/android_bg.jpg"
imageView = mImageView
options {
// these values are all default value , you do not need specific them if you do not want to custom
imageResOnLoading = R.drawable.default_image
imageResOnLoading = R.drawable.default_image
imageResOnFail = R.drawable.default_image
decodeConfig = Bitmap.Config.RGB_565
scaleType = ImageView.ScaleType.CENTER_CROP
maxWidth = ImageDisplayOption.DETAULT_IMAGE_WIDTH_MAX
maxHeight = ImageDisplayOption.DETAULT_IMAGE_HEIGHT_MAX
}
}
直接下载或者配置化下载。
Image.load {
url = "http://7xpox6.com1.z0.glb.clouddn.com/android_bg.jpg"
onSuccess { bitmap -> mImageView.setImageBitmap(bitmap)}
}
Image.load {
url = "http://7xpox6.com1.z0.glb.clouddn.com/android_bg.jpg"
options {
scaleType = ImageView.ScaleType.CENTER_CROP
maxWidth = ImageDisplayOption.DETAULT_IMAGE_WIDTH_MAX
maxHeight = ImageDisplayOption.DETAULT_IMAGE_HEIGHT_MAX
}
onSuccess { bitmap -> _imageView2?.setImageBitmap(bitmap) }
onFail { error ->
log(error.toString())
}
}