永发信息网

android webview和cookie的关系

答案:2  悬赏:60  手机版
解决时间 2021-03-11 14:56
  • 提问者网友:不爱我么
  • 2021-03-10 23:03
一般在手机中访问webview都是绑定一个cookie,这个cookie在webview的html页面中通过JS根本就获取不到,简单的说就是document.cookie无法获取到natvie代码绑定在url上的cookie值。请问有没有人知道webview中cookie的存储机制,不是说native代码的cookie机制,那个我知道。
最佳答案
  • 五星知识达人网友:掌灯师
  • 2021-03-10 23:28
你的WebView设置不正确。
全部回答
  • 1楼网友:神鬼未生
  • 2021-03-11 00:11
在app中嵌入网页,使用nativie方式登录,然后将cookie保存到webview中,实现免登录功能。同步cookie到webview的方法可以参考下面的代码: private void synccookie(context context, string url){ try{ log.d("nat: webview.synccookie.url", url); cookiesyncmanager.createinstance(context); cookiemanager cookiemanager = cookiemanager.getinstance(); cookiemanager.setacceptcookie(true); cookiemanager.removesessioncookie();// 移除 cookiemanager.removeallcookie(); string oldcookie = cookiemanager.getcookie(url); if(oldcookie != null){ log.d("nat: webview.synccookieoutter.oldcookie", oldcookie); } stringbuilder sbcookie = new stringbuilder(); sbcookie.append(string.format("jsessionid=%s","input your jsessionid string")); sbcookie.append(string.format(";domain=%s", "input your domain string")); sbcookie.append(string.format(";path=%s","input your path string")); string cookievalue = sbcookie.tostring(); cookiemanager.setcookie(url, cookievalue); cookiesyncmanager.getinstance().sync(); string newcookie = cookiemanager.getcookie(url); if(newcookie != null){ log.d("nat: webview.synccookie.newcookie", newcookie); } }catch(exception e){ log.e("nat: webview.synccookie failed", e.tostring()); } } 使用上面的方法可以将cookie同步到webview中,这样浏览网页时即可实现免登录。 但是在实际使用过程中会出现cookie并未保存成功,每次都会跳转到登录页面应为初始化webview时漏掉了重要的东西。可以参考下面代码设置webview。 private void initwebviewsettings(){ // mywebview.getsettings().setsupportzoom(true); // mywebview.getsettings().setbuiltinzoomcontrols(true); // mywebview.getsettings().setdefaultfontsize(12); // mywebview.getsettings().setloadwithoverviewmode(true); // 设置可以访问文件 mywebview.getsettings().setallowfileaccess(true); //如果访问的页面中有javascript,则webview必须设置支持javascript mywebview.getsettings().setjavascriptenabled(true); mywebview.getsettings().setuseragentstring(myapplication.getuseragent()); mywebview.getsettings().setcachemode(websettings.load_no_cache); mywebview.getsettings().setallowfileaccess(true); mywebview.getsettings().setappcacheenabled(true); mywebview.getsettings().setdomstorageenabled(true); mywebview.getsettings().setdatabaseenabled(true); } 完成以上两步操作,再次运行程序,就会发现,打开网页后不会再跳转到登录页面了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯