我想通过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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)