基于OKHttp3,整理常用的请求处理方法;
1、获取Get请求的参数
private fun paramsToJson4Get(url: String): Map<String, String> {
val map = mutableMapOf<String, String>()
try {
val uri: Uri = Uri.parse(url)
for (paramName in uri.queryParameterNames) {
val paramValue: String = uri.getQueryParameter(paramName)
map[paramName] = java.net.URLDecoder.decode(paramValue, "UTF-8")
Log.d("caowj","${paramName}:${paramValue}")
}
} catch (e: UnsupportedEncodingException) {
e.printStackTrace()
}
return map
}
2、保存okhttp3.RequestBody中内容
将RequestBody以json格式保存到本地TXT文件中
// RequestBody转换成String
private fun bodyToString(body: RequestBody): String {
val buffer = Buffer()
body.writeTo(buffer)
return buffer.readString(Charset.defaultCharset())
}
3、okhttp3.Request.Builder
val body4Get: String = mapOf(
"serviceSuffix" to "",
"params" to "",
"serviceHeader" to "tokenMap"
).toJson.replace("\\", "")
val builder = Request.Builder()
builder.url("")
builder.addHeader("ContentType", "application/json; charset=UTF-8")
builder.post(
RequestBody.create(
MediaType.parse("application/json; charset=UTF-8"),
body4Get
)
)
val request:Request = builder.build()
4、遍历okhttp3.FormBody
private fun paramsToJson(body: FormBody): Map<String, String> {
val map = mutableMapOf<String, String>()
val size = body.size()
for (i in 0 until size) {
map[body.encodedName(i)] = java.net.URLDecoder.decode(body.encodedValue(i), "UTF-8")
}
return map
}
5、Interceptor(拦截器)
Retrofit Interceptor(拦截器) 拦截请求并做相关处理
- 获取常规post请求参数
- 对get请求做统一参数处理
- 对post请求添加统一参数