okhttp统一处理错误码

这里记录一下通过拦截器统一处理错误码逻辑的方法

package com.bdxh.clientstudentandroid.http

import android.os.Handler
import android.os.Looper
import com.bdxh.clientstudentandroid.bean.ResultBean
import com.bdxh.clientstudentandroid.bean.mq.MqResponseBean
import com.bdxh.clientstudentandroid.service.router.MQMessageRouter
import com.bdxh.clientstudentandroid.utils.LogUtils
import com.google.gson.Gson
import okhttp3.Interceptor
import okhttp3.Response
import java.nio.charset.Charset


/**
 *@name     作者:陆键霏
 *@describe 描述:
 */
class BodyInterceptor:Interceptor {
    
    companion object {
        const val TAG = "BodyInterceptor"
    }

    private val gson = Gson()
    private val handler = Handler(Looper.getMainLooper())
    
    override fun intercept(chain: Interceptor.Chain): Response {
        val charset = Charset.forName("UTF-8")
        // 打印请求报文
        val request = chain.request()
        val response = chain.proceed(request)
        val responseBody = response.body
        val source = responseBody?.source()
        source?.request(Long.MAX_VALUE)
        val buffer = source?.buffer()
        val respBody = buffer?.clone()?.readString(charset)
        LogUtils.d(TAG, "$respBody")
        parseAuthError(respBody)
        return response
    }
    
    private fun parseAuthError(respBody:String?) {
       // 处理自身的业务逻辑
    } 
}

然后注册拦截器

 val okHttpClient = OkHttpClient.Builder()
                .addInterceptor(HeadInterceptor())
                .addInterceptor(BodyInterceptor())
                .connectTimeout(CONNECT_TIME_OUT.toLong(), TimeUnit.MINUTES)
                .readTimeout(READ_TIME_OUT.toLong(), TimeUnit.MINUTES)
                .writeTimeout(WRITE_TIME_OUT.toLong(), TimeUnit.MINUTES)
                .pingInterval(15,TimeUnit.SECONDS)
                .retryOnConnectionFailure(false)
                .connectionPool(ConnectionPool(32, 20, TimeUnit.MILLISECONDS))
                .addNetworkInterceptor(loggingInterceptor)
                .build()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值