【问题标题】:Android - How to pass cookie to load url with webview?Android - 如何传递 cookie 以使用 webview 加载 url?
【发布时间】:2014-03-25 14:22:54
【问题描述】:

我必须在 webview 中加载 url 并发送一些 cookie。如何做到这一点?

我正在执行以下代码..

CookieManager cookieManager;

CookieSyncManager.createInstance(PrivacyActivity.this);
cookieManager = CookieManager.getInstance();

cookieManager.setCookie("param", "value");
CookieSyncManager.getInstance().sync();

WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
wv.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return super.shouldOverrideUrlLoading(view, url);
    }
});
wv.loadUrl("https://example.com");

但没有得到正确的结果。只是得到“https://example.com”。 Cookie 不起作用..

【问题讨论】:

    标签: android cookies webview


    【解决方案1】:

    此解决方案对我有用(只需在加载 url 之前将 cookie 添加到 CookieManager 即可):

    WebView webview = (WebView) findViewById(R.id.webview);
    ...
    CookieManager.getInstance().setCookie("http://example.com/", "key=value");
    webview.loadUrl("http://example.com/");
    

    【讨论】:

    • 感谢卡塔卢恩。拯救了我的一天
    【解决方案2】:

    我解决了问题,,,

            WebView webview = (WebView) this.findViewById(R.id.wv_file);
            final WebSettings settings = webview.getSettings();
            settings.setJavaScriptEnabled(true);
            settings.setAppCacheEnabled(true);
            settings.setBuiltInZoomControls(true);
            settings.setPluginState(WebSettings.PluginState.ON);
    
            webview.setWebChromeClient(new WebChromeClient());
    
            CookieSyncManager.createInstance(ActivityName.this);
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.removeSessionCookie();
            String cookieString = "param=value";
            cookieManager.setCookie(domain_of_url("like http://abc-site.com"), cookieString);
            CookieSyncManager.getInstance().sync();
    
            Map<String, String> abc = new HashMap<String, String>();
            abc.put("Cookie", cookieString);
            webview.loadUrl("http://abc-site.com/a1/namedFolder/file",
                    abc);
    

    【讨论】:

    • CookieSyncManager 的替代方法是什么?另外,我们需要手动添加cookie吗?我们不能将所有 cookie 都传递给 webview 吗?
    • @Mr.India CookieManager 现在有一个 flush() 方法,在所有 cookie 同步到磁盘之前会一直阻塞。
    猜你喜欢
    • 2015-11-05
    • 2015-08-07
    • 2018-06-01
    • 1970-01-01
    • 2015-12-24
    • 2013-04-18
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多