使用HttpURLConnection加载htm(超链接)获得cookie并将cookie同步到webView中

一、【环境】

    1.原生页面使用webView加载h5页面(浏览);

    2.(购买商品时)后台h5使用cookie判断登录状态;

    3.没登录情况下js调用原生登录窗口;

    4.原生登录后将cookie同步到webView;


二、【步骤】

    1.新开线程加载httpUrlConnection

    /**检测网址*/
    private void detectionUrl(final String url) {
        new Thread(new Runnable() {
            @Override
            public void run() {
               getRespStatus(url);
            }
        }).start();
    }
    2.加载html读取状态与cookie

 /**获得网页请求码*/
    private int getRespStatus(String htmlUrl) {
        int status=0;
        try {
            URL url = new URL(htmlUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setUseCaches(false);//请求不能使用缓存
            conn.setConnectTimeout(3000);//链接超时
            status = conn.getResponseCode();
            String sessionId = "";
            String cookieVal = "";
            String key = null;
            //取cookie
            for(int i = 1; (key = conn.getHeaderFieldKey(i)) != null; i++){
                if(key.equalsIgnoreCase("set-cookie")){
                    cookieVal = conn.getHeaderField(i);
//                    cookieVal = cookieVal.substring(0, cookieVal.indexOf(";"));
                    sessionId = sessionId + cookieVal + ";";
                }
            }
            myWv.synCookies(context,htmlUrl,cookieVal);//同步cookie到webView
        } catch (IOException e) {
            e.printStackTrace();
        }
        AutoLog.v(TAG, "H5地址-------------:" + htmlUrl + "  请求码:" + status);
        return status;
    }
    3.同步cookie

/**
     * 同步一下cookie
     */
    public void synCookies(Context context, String url,  String cookies) {
        CookieSyncManager.createInstance(context);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        cookieManager.removeSessionCookie();//移除
        cookieManager.setCookie(url, cookies);//cookies是在HttpClient中获得的cookie
        CookieSyncManager.getInstance().sync();
    }

    *注:



    4.关闭webView时清空cookie

    public void clearWebViewCache(Context context){
        // 清除cookie即可彻底清除缓存
        CookieSyncManager.createInstance(context);
        CookieManager.getInstance().removeAllCookie();
    }




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值