package com.dayu.general.net
|
|
import com.dayu.general.BaseApplication
|
import com.tencent.bugly.crashreport.CrashReport
|
import okhttp3.Interceptor
|
import okhttp3.Protocol
|
import okhttp3.Request
|
import okhttp3.Response
|
import okhttp3.ResponseBody
|
import java.io.IOException
|
import java.net.ConnectException
|
|
/**
|
* Description:
|
* Author: zuo
|
* Date: 2025-03-06
|
*/
|
class MyIntercepterApplication :Interceptor{
|
|
@Throws(IOException::class)
|
override fun intercept(chain: Interceptor.Chain): Response {
|
val request: Request = chain.request()
|
try {
|
val myRequest = createRequest(chain.request())
|
if (myRequest != null) {
|
var response: Response? = null
|
try {
|
response = chain.proceed(myRequest)
|
} catch (e: ConnectException) {
|
e.printStackTrace()
|
return getNullResponse(request)
|
}
|
return response
|
}
|
} catch (e: Exception) {
|
e.printStackTrace()
|
CrashReport.postCatchedException(e)
|
}
|
return getNullResponse(request)
|
}
|
|
protected fun createRequest(request: Request): Request? {
|
try {
|
val builder: Request.Builder = request.newBuilder()
|
val params: Map<*, *> = HashMap<Any?, Any?>()
|
if (request.method == "GET") {
|
builder.url(request.url.toString())
|
|
} else {
|
|
}
|
builder.addHeader("tag", BaseApplication.tag)
|
builder.addHeader("token", BaseApplication.token)
|
return builder.build()
|
} catch (e: Exception) {
|
e.printStackTrace()
|
CrashReport.postCatchedException(e)
|
}
|
return null
|
}
|
|
/**
|
* 网络错误时的异常处理
|
*
|
* @param request
|
* @return
|
*/
|
fun getNullResponse(request: Request?): Response {
|
val code = 20010
|
val message = "咦,请检查网络"
|
val errJson = "{\"code\":$code,\"message\":\"$message\"}"
|
val responseBody = ResponseBody.create(null, errJson)
|
return Response.Builder()
|
.request(request!!)
|
.protocol(Protocol.HTTP_1_1)
|
.code(200)
|
.message(message)
|
.body(responseBody)
|
.build()
|
}
|
|
|
|
}
|