|
@@ -18,21 +18,20 @@ class CronetInterceptor(private val cookieJar: CookieJar) : Interceptor {
|
|
|
}
|
|
}
|
|
|
val original: Request = chain.request()
|
|
val original: Request = chain.request()
|
|
|
//Cronet未初始化
|
|
//Cronet未初始化
|
|
|
- return if (!CronetLoader.install() || cronetEngine == null) {
|
|
|
|
|
- chain.proceed(original)
|
|
|
|
|
- } else try {
|
|
|
|
|
|
|
+ if (!CronetLoader.install() || cronetEngine == null) {
|
|
|
|
|
+ return chain.proceed(original)
|
|
|
|
|
+ }
|
|
|
|
|
+ val cronetException: Exception
|
|
|
|
|
+ try {
|
|
|
val builder: Request.Builder = original.newBuilder()
|
|
val builder: Request.Builder = original.newBuilder()
|
|
|
//移除Keep-Alive,手动设置会导致400 BadRequest
|
|
//移除Keep-Alive,手动设置会导致400 BadRequest
|
|
|
builder.removeHeader("Keep-Alive")
|
|
builder.removeHeader("Keep-Alive")
|
|
|
builder.removeHeader("Accept-Encoding")
|
|
builder.removeHeader("Accept-Encoding")
|
|
|
|
|
|
|
|
val newReq = builder.build()
|
|
val newReq = builder.build()
|
|
|
- proceedWithCronet(newReq, chain.call(), chain.readTimeoutMillis())/*?.let { response ->
|
|
|
|
|
- //从Response 中保存Cookie到CookieJar
|
|
|
|
|
- //cookieJar.receiveHeaders(newReq.url, response.headers)
|
|
|
|
|
- response
|
|
|
|
|
- }*/ ?: chain.proceed(original)
|
|
|
|
|
|
|
+ return proceedWithCronet(newReq, chain.call(), chain.readTimeoutMillis())!!
|
|
|
} catch (e: Exception) {
|
|
} catch (e: Exception) {
|
|
|
|
|
+ cronetException = e
|
|
|
//不能抛出错误,抛出错误会导致应用崩溃
|
|
//不能抛出错误,抛出错误会导致应用崩溃
|
|
|
//遇到Cronet处理有问题时的情况,如证书过期等等,回退到okhttp处理
|
|
//遇到Cronet处理有问题时的情况,如证书过期等等,回退到okhttp处理
|
|
|
if (!e.message.toString().contains("ERR_CERT_", true)
|
|
if (!e.message.toString().contains("ERR_CERT_", true)
|
|
@@ -40,7 +39,12 @@ class CronetInterceptor(private val cookieJar: CookieJar) : Interceptor {
|
|
|
) {
|
|
) {
|
|
|
e.printOnDebug()
|
|
e.printOnDebug()
|
|
|
}
|
|
}
|
|
|
- chain.proceed(original)
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ return chain.proceed(original)
|
|
|
|
|
+ } catch (e: Exception) {
|
|
|
|
|
+ e.addSuppressed(cronetException)
|
|
|
|
|
+ throw e
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -51,8 +55,8 @@ class CronetInterceptor(private val cookieJar: CookieJar) : Interceptor {
|
|
|
} else {
|
|
} else {
|
|
|
OldCallback(request, call, readTimeoutMillis)
|
|
OldCallback(request, call, readTimeoutMillis)
|
|
|
}
|
|
}
|
|
|
- buildRequest(request, callBack)?.runCatching {
|
|
|
|
|
- return callBack.waitForDone(this)
|
|
|
|
|
|
|
+ buildRequest(request, callBack)?.let {
|
|
|
|
|
+ return callBack.waitForDone(it)
|
|
|
}
|
|
}
|
|
|
return null
|
|
return null
|
|
|
}
|
|
}
|