优化
This commit is contained in:
@@ -13,46 +13,41 @@ class CronetInterceptor(private val cookieJar: CookieJar) : Interceptor {
|
|||||||
|
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
|
if (chain.call().isCanceled()) {
|
||||||
|
throw IOException("Canceled")
|
||||||
|
}
|
||||||
val original: Request = chain.request()
|
val original: Request = chain.request()
|
||||||
try {
|
//Cronet未初始化
|
||||||
if (chain.call().isCanceled()) {
|
return if (!CronetLoader.install() || cronetEngine == null) {
|
||||||
return chain.proceed(original)
|
chain.proceed(original)
|
||||||
}
|
} else try {
|
||||||
//Cronet未初始化
|
val builder: Request.Builder = original.newBuilder()
|
||||||
return if (!CronetLoader.install() || cronetEngine == null) {
|
//移除Keep-Alive,手动设置会导致400 BadRequest
|
||||||
chain.proceed(original)
|
builder.removeHeader("Keep-Alive")
|
||||||
} else try {
|
builder.removeHeader("Accept-Encoding")
|
||||||
val builder: Request.Builder = original.newBuilder()
|
if (cookieJar != CookieJar.NO_COOKIES) {
|
||||||
//移除Keep-Alive,手动设置会导致400 BadRequest
|
val cookieStr = getCookie(original.url)
|
||||||
builder.removeHeader("Keep-Alive")
|
//设置Cookie
|
||||||
builder.removeHeader("Accept-Encoding")
|
if (cookieStr.length > 3) {
|
||||||
if (cookieJar != CookieJar.NO_COOKIES) {
|
builder.addHeader("Cookie", cookieStr)
|
||||||
val cookieStr = getCookie(original.url)
|
|
||||||
//设置Cookie
|
|
||||||
if (cookieStr.length > 3) {
|
|
||||||
builder.addHeader("Cookie", cookieStr)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val newReq = builder.build()
|
val newReq = builder.build()
|
||||||
proceedWithCronet(newReq, chain.call())?.let { response ->
|
proceedWithCronet(newReq, chain.call())?.let { response ->
|
||||||
//从Response 中保存Cookie到CookieJar
|
//从Response 中保存Cookie到CookieJar
|
||||||
cookieJar.receiveHeaders(newReq.url, response.headers)
|
cookieJar.receiveHeaders(newReq.url, response.headers)
|
||||||
response
|
response
|
||||||
} ?: chain.proceed(original)
|
} ?: chain.proceed(original)
|
||||||
} catch (e: Exception) {
|
|
||||||
//不能抛出错误,抛出错误会导致应用崩溃
|
|
||||||
//遇到Cronet处理有问题时的情况,如证书过期等等,回退到okhttp处理
|
|
||||||
if (!e.message.toString().contains("ERR_CERT_", true)
|
|
||||||
&& !e.message.toString().contains("ERR_SSL_", true)
|
|
||||||
) {
|
|
||||||
e.printOnDebug()
|
|
||||||
}
|
|
||||||
chain.proceed(original)
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printOnDebug()
|
//不能抛出错误,抛出错误会导致应用崩溃
|
||||||
return chain.proceed(original)
|
//遇到Cronet处理有问题时的情况,如证书过期等等,回退到okhttp处理
|
||||||
|
if (!e.message.toString().contains("ERR_CERT_", true)
|
||||||
|
&& !e.message.toString().contains("ERR_SSL_", true)
|
||||||
|
) {
|
||||||
|
e.printOnDebug()
|
||||||
|
}
|
||||||
|
chain.proceed(original)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user