Android WebView访问网站携带登录认证Cookies和动态自定义的cookies

。最近项目几个页面要复用微信程序的网页但是需要调用微网站登录接口,返回Cookies,网页流量访问需要的网页的时候携带。

并且还需要几个其他的动态改变的Cookies,目的是根据这几个动态自定义Cookies来决定网页的内容。如果不传,则显示最原始的网页。

下面一步一步来记录:

第一步先调用微信端登录接口,获取默认的三个Cookie,即接口的响应的报头中拿到这个操作自己找个合适的地方·进行:

List <String> cookies = response.headers(“Set-Cookie”);
拿到后自行存储。

第二步,在需要调用的WebView加载微信端程序网页的时候,在web视图加载之前调用这个方法:

    /**
     * 设置cookies
     */
    public void setCookies(){
        CookieManager cookieManager = CookieManager.getInstance();

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            CookieSyncManager.createInstance(getActivity());
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            cookieManager.setAcceptThirdPartyCookies(bindingView.wvHealthGut, true);
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
            CookieManager.setAcceptFileSchemeCookies(true);
        }

        cookieManager.setAcceptCookie(true);
        cookieManager.removeSessionCookie();
        cookieManager.removeAllCookie();

        List<String> cookies = “刚才保存的Cookies”;

        int count = cookies.size();
        for (int i = 0;i < count;i++){
            cookieManager.setCookie(“http:// xxxx /”,cookies.get(i));
        }

        cookieManager.setCookie(“http:// xxxx /”,“KindergartenId =”+幼儿园ID);

        CookieSyncManager.getInstance().sync();
    }
最后一步:在调用完上面方法之后,设置的WebView属性这步如果不设置,那么你传入的自定义的饼干,微信端网页拿到之后你这里的网页是不会刷新的,即你只能显示微信端网页没有数据的时候的样子。

setCookies();
//设置jsEnable属性
        bindingView.wvHealthGut.getSettings()setJavaScriptEnabled(true)。
//最后在loadUrl
        bindingView.wvHealthGut.loadUrl(webPath);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值