如何在android WebView客户端中设置cookie

如何在android WebView客户端中设置cookie,第1张

概述我想通过WebView调用一个特定的URL.该页面只能在用户登录后调用.我使用AsyncHttpClient库执行登录调用.成功登录后,通过WebView加载URL似乎无法识别正确的标头espcookie.我怀疑是在HttpClient和WebView的HttpClient之间cookie没有正确同步.知道为什么吗?.这是我如何使用WebView

我想通过WebVIEw调用一个特定的URL.该页面只能在用户登录后调用.我使用AsynchttpClIEnt库执行登录调用.成功登录后,通过WebVIEw加载URL似乎无法识别正确的标头esp cookie.我怀疑是在httpClIEnt和WebVIEw的httpClIEnt之间cookie没有正确同步.知道为什么吗? .这是我如何使用WebVIEw

    final WebVIEw webVIEw = (WebVIEw) content.findVIEwByID(R.ID.web_travel_advisory);    String url = "http://mydomainurl.com/get_data_after_login";    webVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt());    cookieSyncManager.createInstance(getActivity());    cookieSyncManager.getInstance().startSync();    cookieManager.getInstance().setAcceptcookie(true);    webVIEw.getSettings().setJavaScriptEnabled(true);    webVIEw.loadUrl(url);

感谢你的帮助.

解决方法:

哦,几个小时后,我终于弄清楚它是否有效.首先,根据doc,自API 21以来,CookieSyncManager在AndroID的更新版本上被弃用.因此决定不再使用它了.其次,CookieManager用于存储WebVIEw的cookie.

最终代码

    cookieManager cookieManager = cookieManager.getInstance();    cookieManager.setAcceptcookie(true);    List<cookie> cookies = WSHelper.cookieStore.getcookies();    cookieManager.removeAllcookie();    if (cookies != null) {        for (cookie cookie : cookies) {            if (cookie.getname().contains("session")){                String cookieString = cookie.getname() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain();                cookieManager.setcookie(cookie.getDomain(), cookieString);                Log.d("cookieUrl",cookieString + " ");            }        }    }    webVIEw.loadUrl(url);

解决方案的关键变化是:使用cookie.getDomain()而不是显式域.

cookieManager.setcookie(cookie.getDomain(), cookieString);
总结

以上是内存溢出为你收集整理的如何在android WebView客户端设置cookie全部内容,希望文章能够帮你解决如何在android WebView客户端中设置cookie所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1100677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存