我有个问题。我正在发送从 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)