0

我有个问题。我正在发送从 url 获取 cookie 的请求。这个网址有返回图片的链接。但是 cookie 会返回过期日期时间,以便在一段时间内不显示图像。我将此 cookie 应用到 CookieManager 并且在我在 webview 上加载此 url 之后,但 webview 一直显示此图像。

创建 OkhtpClient 并缓存 CookieJar

val httpClient: OkHttpClient = OkHttpClient.Builder()
                .cookieJar(object : CookieJar {
                    override fun loadForRequest(url: HttpUrl): List<Cookie> {
                        return emptyList()
                    }

                    @Override
                    override fun saveFromResponse(url: HttpUrl, cookies: List<Cookie>) {
                        Log.e(TAG, cookies.toString())
                        CookieManager.getInstance().removeAllCookies(null)
                        CookieManager.getInstance().flush()

                        //setting special date for not to show image in webview
                        CookieManager.getInstance().setCookie(banner, 
                           "expires=Mon, 31 Jan 2023 23:06:37 GMT")

                    }
                }).build()

Okhttpclient 的主要请求和 webview 的响应设置 loadurl 之后。

httpClient.newCall(okhttp3.Request.Builder().url(banner).get().build()).enqueue(object: Callback{
                override fun onFailure(call: Call, exception: IOException) {
                    //onFailure(exception)
                }

                override fun onResponse(call: Call, response: Response) {
                    CookieManager.getInstance().getCookie(banner)
 //here I'm getting correct cookies for check "expires=Mon, 31 Jan 2023 23:06:37 GMT"
                    val cookieManager = CookieManager.getInstance()
                    cookieManager.acceptCookie()
                    CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
                    holder.webView.post {
                        cookieManager.setAcceptThirdPartyCookies(holder.adsWebView, true)
                        holder.webView.settings.javaScriptEnabled = true
                        holder.webView.loadUrl(banner)
                    }
                }
            })

我已经检查过了,cookie 的有效期是正确的。CookieManager return expires=Mon, 31 Jan 2023 23:06:37 GMT 但每次都会显示图像。我做错了什么?.getCookies 返回正确的过期日期,并且 cookieManager 在 loadurl 之前有这个日期。

我在 postDelayed 中调用的所有代码

webView.postDelayed({
val httpClient:.....
.....
httpClient.newCall.....
.....
}, 10)
4

0 回答 0