23

我需要获取存储在 webview 中的所有 cookie。目前默认的网页视图。

https://developer.android.com/reference/android/webkit/CookieManager.html

目前只支持:

  • 获取Cookie(字符串网址)

我需要能够在不知道确切域名的情况下获取所有 cookie。

感谢您的任何建议,D

4

2 回答 2

2

在 Java 中,据我了解,您正在使用 webView 并且您想要获取特定预览 URL 的所有 cookie,您可以从 webView 客户端获取当前 URL 并将其作为参数传递给 getCookie()

String cookies = CookieManager.getInstance().getCookie(webView.getUrl());

作为最佳实践,您应该在这样的页面加载后尝试

    WebView webView = findViewById(R.id.webview_id);
    WebViewClient webViewClient = new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            String cookies = CookieManager.getInstance().getCookie(view.getUrl());
            // save cookies or call new fun to handle actions 
            //  newCookies(cookies);
        }
    };
    webView.setWebViewClient(webViewClient);
    //webView.loadUrl(/*what ever url you want to load */);
于 2020-07-18T17:43:42.733 回答
0

您可以创建自己的 cookie 存储并拦截 WebView 加载的 cookie。java.net.CookieManager用作存储的示例:

val cookieManager = java.net.CookieManager()

webView.webViewClient = object : WebViewClient() {
    override fun onPageFinished(view: WebView?, url: String?) {
        CookieManager.getInstance()
                .getCookie(url)
                ?.let {
                    val uri = URI(url)
                    HttpCookie.parse(it).forEach {
                        cookieManager.cookieStore.add(uri, it)
                    }
                }
    }
}
于 2018-07-24T11:51:55.970 回答