OKHttp3网络请求,接口处理

基于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请求添加统一参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值