From 1d6ce30113182715d74005a989de32bbdc851942 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Sun, 14 May 2023 15:50:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/help/glide/OkHttpStreamFetcher.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/io/legado/app/help/glide/OkHttpStreamFetcher.kt b/app/src/main/java/io/legado/app/help/glide/OkHttpStreamFetcher.kt index c0cb80aa0..d7409b0fe 100644 --- a/app/src/main/java/io/legado/app/help/glide/OkHttpStreamFetcher.kt +++ b/app/src/main/java/io/legado/app/help/glide/OkHttpStreamFetcher.kt @@ -10,6 +10,7 @@ import com.bumptech.glide.util.ContentLengthInputStream import com.bumptech.glide.util.Preconditions import io.legado.app.data.entities.BaseSource import io.legado.app.exception.NoStackTraceException +import io.legado.app.help.http.CookieManager.cookieJarHeader import io.legado.app.help.http.addHeaders import io.legado.app.help.http.okHttpClient import io.legado.app.help.source.SourceHelp @@ -56,6 +57,9 @@ class OkHttpStreamFetcher(private val url: GlideUrl, private val options: Option source?.getHeaderMap(true)?.let { headerMap.putAll(it) } + if (source?.enabledCookieJar == true) { + headerMap[cookieJarHeader] = "1" + } } headerMap.putAll(url.headers) requestBuilder.addHeaders(headerMap) From 40740775658ecc6ccea3e63250e1cd4cfc303c49 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Sun, 14 May 2023 18:16:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 ++-- app/src/app/java/io/legado/app/lib/cronet/AbsCallBack.kt | 7 ++++--- app/src/main/java/io/legado/app/help/http/HttpHelper.kt | 5 ++--- .../java/io/legado/app/help/http/ObsoleteUrlFactory.kt | 9 +-------- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2dd13c9ec..57b96c2de 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -71,8 +71,8 @@ android { } applicationIdSuffix '.release' - minifyEnabled true - shrinkResources true + minifyEnabled false + //shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { diff --git a/app/src/app/java/io/legado/app/lib/cronet/AbsCallBack.kt b/app/src/app/java/io/legado/app/lib/cronet/AbsCallBack.kt index 4ab10551d..0a0334db6 100644 --- a/app/src/app/java/io/legado/app/lib/cronet/AbsCallBack.kt +++ b/app/src/app/java/io/legado/app/lib/cronet/AbsCallBack.kt @@ -49,6 +49,7 @@ abstract class AbsCallBack( private var cancelJob: Coroutine<*>? = null private var followRedirect = false private var enableCookieJar = false + private var redirectRequest: Request? = null init { if (originalRequest.header(cookieJarHeader) != null) { @@ -108,7 +109,7 @@ abstract class AbsCallBack( if (enableCookieJar) { CookieManager.saveResponse(response) } - originalRequest = buildRedirectRequest(response, originalRequest.method, newLocationUrl) + redirectRequest = buildRedirectRequest(response, originalRequest.method, newLocationUrl) } request.cancel() } @@ -189,10 +190,10 @@ abstract class AbsCallBack( if (followRedirect) { followRedirect = false if (enableCookieJar) { - val newRequest = CookieManager.loadRequest(originalRequest) + val newRequest = CookieManager.loadRequest(redirectRequest!!) buildRequest(newRequest, this)?.start() } else { - buildRequest(originalRequest, this)?.start() + buildRequest(redirectRequest!!, this)?.start() } return } diff --git a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt index 836a0738b..7905e354a 100644 --- a/app/src/main/java/io/legado/app/help/http/HttpHelper.kt +++ b/app/src/main/java/io/legado/app/help/http/HttpHelper.kt @@ -67,7 +67,7 @@ val okHttpClient: OkHttpClient by lazy { builder.addHeader("Keep-Alive", "300") builder.addHeader("Connection", "Keep-Alive") builder.addHeader("Cache-Control", "no-cache") - chain.proceed(builder.build()).newBuilder().removeHeader(cookieJarHeader).build() + chain.proceed(builder.build()) }) .addNetworkInterceptor { chain -> var request = chain.request() @@ -79,11 +79,10 @@ val okHttpClient: OkHttpClient by lazy { request = CookieManager.loadRequest(requestBuilder.build()) } - var networkResponse = chain.proceed(request) + val networkResponse = chain.proceed(request) if (enableCookieJar) { CookieManager.saveResponse(networkResponse) - networkResponse = networkResponse.newBuilder().header(cookieJarHeader, "1").build() } networkResponse } diff --git a/app/src/main/java/io/legado/app/help/http/ObsoleteUrlFactory.kt b/app/src/main/java/io/legado/app/help/http/ObsoleteUrlFactory.kt index 54df34dcf..39dc334c6 100644 --- a/app/src/main/java/io/legado/app/help/http/ObsoleteUrlFactory.kt +++ b/app/src/main/java/io/legado/app/help/http/ObsoleteUrlFactory.kt @@ -376,10 +376,6 @@ class ObsoleteUrlFactory(private var client: OkHttpClient) : URLStreamHandlerFac val clientBuilder: OkHttpClient.Builder = client.newBuilder() clientBuilder.interceptors().clear() clientBuilder.interceptors().add(UnexpectedException.INTERCEPTOR) - clientBuilder.addInterceptor { chain -> - val response = chain.proceed(chain.request()) - response.newBuilder().removeHeader(cookieJarHeader).build() - } clientBuilder.networkInterceptors().clear() clientBuilder.networkInterceptors().add(networkInterceptor) @@ -393,13 +389,10 @@ class ObsoleteUrlFactory(private var client: OkHttpClient) : URLStreamHandlerFac request1 = CookieManager.loadRequest(requestBuilder.build()) } - var networkResponse = chain.proceed(request1) + val networkResponse = chain.proceed(request1) if (enableCookieJar) { CookieManager.saveResponse(networkResponse) - networkResponse = networkResponse.newBuilder() - .header(cookieJarHeader, "1") - .build() } networkResponse }