Skip to content
用 Kotlin 基于 Volley 为网络请求定制的 DSL
Branch: master
Clone or download
Latest commit 659c7ed Dec 21, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app
gradle/wrapper
library
.gitignore
CHANGELOG.md
README.md
README_EN.md
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

Kolley

Kolley是用 kotlin 实现,结合了VolleyOkHttp的一个RESTful网络请求框架。

Download

English

引用

repositories {
    jcenter()
    maven { url "https://jitpack.io" } // for PersistentCookieJar
}

compile 'com.ohmerhe.kolley:kolley:0.3.1'

0.3.1

  • 支持 Cookie 持久化储存
  • 修复上传中中文乱码的问题

0.3.0

  • 支持 Post 请求上传 Raw
  • 支持 upload 文件
  • 修复请求中没有传递 Header 的bug

标准HTTP请求

快速使用

初始化一次以后,可以很方便的发起一个网络请求。

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

添加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)

Configuration

或者带上一些配置信息一起初始化

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())
    }
}
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.