android中Webview设置多个cookie参数

有时候需要在cookie中设置多个参数传递给前端页面,常用的是 token和渠道号 。将N个参数的key-value按照分号分开然后一次设置,一直只使用token第一个参数,可以正常获取,所以没问题,比如


StringBuilder sbCookie = new StringBuilder();
            if (MyApplication.isLogined()) {
                UserBean userinfo = MyApplication.getUserBean();
                if(userinfo != null && !TextUtils.isEmpty(userinfo.getToken())){
                    sbCookie.append(String.format("token" + "=%s",userinfo.getToken()));
                    sbCookie.append(String.format(";from" + "=%s", "android"));
                }
            } else {
                sbCookie.append(String.format("from" + "=%s", "android"));
            }

            //webview在使用cookie前会前判断保存cookie的domain和当前要请求的domain是否相同,相同才会发送cookie
            sbCookie.append(String.format(";domain=%s",aURL.getHost())); //注意,是getHost(),不是getAuthority(),
            sbCookie.append(String.format(";path=%s","/"));

            String cookieValue = sbCookie.toString();
            cookieManager.setCookie(currentUrl, cookieValue);
            CookieSyncManager.getInstance().sync();

最近有需求获取渠道号,发现怎么也获取不到,当把渠道号放在TOKEN的顺序之前的时候,token又获取不到。后来查询一番终于知道正确的姿势应该是每个参数单独设定,如下

StringBuilder sbCookie = new StringBuilder();
            sbCookie.append(String.format("from" + "=%s", "android"));
            sbCookie.append(String.format(";domain=%s",aURL.getHost())); 
            sbCookie.append(String.format(";path=%s","/"));
            cookieManager.setCookie(currentUrl, sbCookie.toString());

            if (MyApplication.isLogined()) {
                UserBean userinfo = MyApplication.getUserBean();
                if(userinfo != null && !TextUtils.isEmpty(userinfo.getToken())){
                    StringBuilder sbCookieToken = new StringBuilder();
                    sbCookieToken.append(String.format("token" + "=%s",userinfo.getToken()));
                    //webview在使用cookie前会前判断保存cookie的domain和当前要请求的domain是否相同,相同才会发送cookie
                    sbCookieToken.append(String.format(";domain=%s",aURL.getHost())); //注意,是getHost(),不是getAuthority(),
                    sbCookieToken.append(String.format(";path=%s","/"));
                    cookieManager.setCookie(currentUrl, sbCookieToken.toString());
                }
            }
            CookieSyncManager.getInstance().sync();
            String newCookie = cookieManager.getCookie(currentUrl);

每一次setCookie操作,都是设置一组对应的cookie,每组cookie都有domain、path这些属性,用“;”来分割开 ,只写了这两个固定属性,多个属性如此以此类推即可。有点坑啊~

什么是cookies呢,Cookies是一个储存于浏览器目录的文本文件,记录你访问一个特定站点的信息,且只能被创建这个Cookies的站点读回,约由255个字符组成,仅占4KB硬盘空间。当用户正在浏览某站点时,它储存于用户机的随机存取存储器RAM,退出浏览器后,它储存于用户的硬盘。储存Cookies的大部分信息是普通的,如当你浏览一个站点时,此文件记录了每一次的击键信息和被访站点的地址等。但是许多Web站点使用Cookies来储存针对私人的数据,如:注册口令、用户名、信用卡编号等,即所谓的"追踪cookies",危害绝不亚于木马。 Cookies的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。 软件简介: IECookiesView是一个专门用来查看IECookies内容的工具, 它可以帮你搜寻并显示出你计算机所有Cookies档案的数据,包括是哪一个网站写入Cookies的,内容有什么,写入的时间日期及此Cookies的有效期限等等资料。 你是否常常怀疑一些网站写入Cookies内容到你的计算机是否会对你造成隐私的侵犯?使用本软件就能知道这些Cookies的内容都是些什么,如此这般,你心里就有底了,就该怎么做了。 此软件只对IE浏览器的Cookies有效,而且多多少少有刺探隐私的"嫌疑",所以,个别灵敏度高的杀毒软件会报毒,请留意!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值