Permalink
Fetching contributors…
Cannot retrieve contributors at this time
188 lines (142 sloc) 2.93 KB

KHttp

Wrapper of OKHttp3 with Kotlin DSL

Usage

1. Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

2. Add the dependency:

dependencies {
	compile 'com.github.frendyxzc:KHttp:0.1.0'
}

3. Add your request as follow:

3.1 Get without callback

Request(this).getNewsList("0", "0")
fun getNewsList(uid: String, cid: String) {
	val url_get = RequestCommon.GET_NEWS_LIST + "&uid=${uid}&type_id=${cid}"

	http {
		url = url_get
		method = "get"
		onSuccess { jsonStr ->
			Log.i("", jsonStr)
		}
		onFail { e ->
			Log.i("", e.message)
		}
	}
}

3.2 Get with callback

Request(this).getNewsList("0", "0", object : Callback<ArrayList<News>> {
	override fun onSuccess(data: ArrayList<News>) {
		Log.i("", "GET = ${data[0].title}")
	}
	override fun onFail(error: String?) {
		Log.i("", "GET error = $error")
	}
})
fun getNewsList(uid: String, cid: String, callback: Callback<ArrayList<News>>) {
	val url_get = RequestCommon.GET_NEWS_LIST + "&uid=${uid}&type_id=${cid}"

	http {
		url = url_get
		method = "get"
		onSuccess { jsonStr ->
			callback.onSuccess(gson.fromJson(jsonStr, RespGetNews::class.java).data)
		}
		onFail { e ->
			callback.onFail(e.message)
		}
	}
}

3.3 Post with callback

Request(this).init(object : Callback<UserID>{
	override fun onSuccess(data: UserID) {
		Log.i("", "POST = ${data.user_id}")
	}
	override fun onFail(error: String?) {
		Log.i("", "POST error = $error")
	}
})
fun init(callback: Callback<UserID>) {
	val url_post = RequestCommon.BASE_URL

	val json = JSONObject()
	json.put("action", "init")
	...
	val postBody = RequestBody.create(JSON, json.toString())

	http {
		url = url_post
		method = "post"
		body = postBody
		onSuccess { jsonStr ->
			callback.onSuccess(gson.fromJson(jsonStr, RespInit::class.java).data)
		}
		onFail { e ->
			callback.onFail(e.message)
		}
	}
}

3.4 Websocket

Socket {
	url = "ws://10.1.1.105:8080/ws"

	onOpen { webSocket, response ->

	}
	onMessage { webSocket, text ->

	}
	onClosing { webSocket, code, reason ->

	}
	onClosed { webSocket, code, reason ->

	}
	onFailure { webSocket, t, response ->

	}
}

3.5 Upload File

Upload {
	url = "http://10.1.1.105:8080/fileUpload"
	file = File("/storage/sdcard0/DCIM/ImageSelector_20170823_144056.mp4")
	fileKey = "file"

	onRequestProgress { bytesWritten, contentLength ->

	}
	onFailure { err ->

	}
	onResponse { response ->

	}
}

3.6 Download File

Download {
	url = "http://10.1.1.105:8080/file/test.apk"
	filePath = "/storage/sdcard0/DCIM/"
	fileName = "test001.apk"

	onRequestProgress { bytesWritten, contentLength ->

	}
	onFail { e ->

	}
	onSuccess { file ->

	}
}

More info: