diff --git a/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt b/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt index 1710a98c6..26c1c8bf7 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/Android14CoroutineHttpEngine.kt @@ -1,6 +1,7 @@ package com.hippo.ehviewer.spider import com.hippo.ehviewer.EhApplication +import eu.kanade.tachiyomi.util.system.logcat import io.ktor.utils.io.pool.DirectByteBufferPool import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch @@ -16,6 +17,7 @@ import kotlin.coroutines.Continuation import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException +private const val TAG = "CronetRequest" private val pool = DirectByteBufferPool(32) val cronetHttpClient: CronetEngine = CronetEngine.Builder(appCtx).apply { @@ -39,7 +41,8 @@ class CronetRequest : AutoCloseable { lateinit var readerCont: Continuation val callback = object : UrlRequest.Callback() { override fun onRedirectReceived(req: UrlRequest, info: UrlResponseInfo, url: String) { - // No-op + logcat(tag = TAG) { "Redirected to $url" } + req.followRedirect() } override fun onResponseStarted(req: UrlRequest, info: UrlResponseInfo) { @@ -62,10 +65,6 @@ class CronetRequest : AutoCloseable { override fun onFailed(req: UrlRequest, info: UrlResponseInfo?, e: CronetException) { daemonCont.resumeWithException(e) } - - override fun onCanceled(req: UrlRequest, info: UrlResponseInfo?) { - // No-op - } } val buffer = pool.borrow() diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt index c916fb65b..6a0ca9737 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.kt @@ -20,6 +20,7 @@ import android.os.Build import android.os.ParcelFileDescriptor import android.os.ParcelFileDescriptor.MODE_READ_WRITE import com.hippo.ehviewer.EhDB +import com.hippo.ehviewer.client.EhCookieStore import com.hippo.ehviewer.client.EhUtils.getSuitableTitle import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.client.ehRequest @@ -35,6 +36,7 @@ import com.hippo.ehviewer.util.sendTo import com.hippo.ehviewer.yorozuya.FileUtils import com.hippo.unifile.UniFile import com.hippo.unifile.openOutputStream +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.Response import okio.Buffer @@ -131,6 +133,7 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) { ): Boolean { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { cronetRequest(url) { + addHeader("Cookie", EhCookieStore.getCookieHeader(url.toHttpUrl())) referer?.let { addHeader("Referer", it) } disableCache() }.execute { info ->