美文网首页
webview 设置cookie

webview 设置cookie

作者: 秋缘未了 | 来源:发表于2017-04-18 16:58 被阅读531次

在开发android项目的时候,遇到了一个问题,在使用webview加载网页的时候,想利用设置cookie来避免在网页上还要再次登录,但是在设置了之后,并没有什么卵用,而且在加载完网页之后,是可以得到网页的cookie的,设置代码如下:

  /**
     * Sync Cookie
     */
    private void syncCookie(Context context, String url){
        try{
            LogUtils.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){
                LogUtils.d("Nat: webView.syncCookieOutter.oldCookie", oldCookie);
            }
       cookieManager.setCookie(url,"52xzqnauthcode="+BaseApplication.getInstance().getLoginUser().getToken());
            cookieManager.setCookie(url,"domain="+".52xzqn.com");
            cookieManager.setCookie(url,"path="+"/");
//            cookieManager.setCookie(url,"expires="+"Tue, 18-Apr-2019 18:42:44 GMT");
            CookieSyncManager.getInstance().sync();
            String newCookie = cookieManager.getCookie(url);
            if(newCookie != null){
                LogUtils.e("newCookie", newCookie);
            }
        }catch(Exception e){
            LogUtils.e("Nat: webView.syncCookie failed", e.toString());
        }
    }

后台总是不能显示已登录状态,协调打印出后台获取的token,发现token中的“+”号变成了空格,所以失败
解决办法:

 String sendBuf = BaseApplication.getInstance().getLoginUser().getToken().replace("+", "%2B");
            cookieManager.setCookie(url,"52xzqnauthcode="+sendBuf);

这样替换后就大功告成了!!!

注::

1.Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。

2.在android里面在调用webView.loadUrl(url)之前一句调用设置cookie的方法就可以给WebView设置Cookie

3.增加请求头:

       //添加请求头
        Map<String, String> extraHeaders;
        extraHeaders = new HashMap<String, String>();
        extraHeaders.put("Token", BaseApplication.getInstance().getLoginUser().getToken());//标识(前面是key,后面是value)
        extraHeaders.put("device", "android");//设备号(前面是key,后面是value)
        webview.loadUrl(detailurll, extraHeaders);

4.初始化相关设置

   /**
     * init WebView Settings
     * */
    private void initWebViewSettings(){
        // 设置可以访问文件
        webview.getSettings().setAllowFileAccess(true);
        //如果访问的页面中有Javascript,则webview必须设置支持Javascript
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        webview.getSettings().setAllowFileAccess(true);
        webview.getSettings().setAppCacheEnabled(true);
        webview.getSettings().setDomStorageEnabled(true);
        webview.getSettings().setDatabaseEnabled(true);
    }

相关文章

  • flutter_webview_plugin设置cookie

    flutter_webview_plugin设置cookie 前言 原版的flutter_webview_plug...

  • webview 设置cookie

    在开发android项目的时候,遇到了一个问题,在使用webview加载网页的时候,想利用设置cookie来避免在...

  • WebView设置Cookie

    项目中native和H5的交互免不了需要在webview里面设置Cookie,方法如下: private void...

  • Android WebView设置Cookie

    最近项目中JS和本地交互需要在网页加载时向WebView同步token来判断当前是否登录APP代码如下:

  • Android WebView设置Cookie

    场景 最近公司项目需求,要求H5可以直接通过cookie得到相关信息 业务场景1:网页登录:记录用户登录信息,下次...

  • android webview设置cookie

    开发中使用webview加载url时,需要带上原生登录的用户信息,所以考虑往cookie中写入,写入cookie的...

  • [Android]Cookie研究

    学习自:android WebView的cookie机制【WebView的cookie机制 】轻松搞定WebVie...

  • WebView设置cookie简述与代码实现

    概述 本文主要说明内容如下: Cookie值的格式 Android端WebView如何设置针对特定域名的网址设置c...

  • 关于webView请求设置Cookie?

    鉴于网上很多设置Cookie的方法,我来说下我在设置cookie遇到的问题。由于服务端说cookie需要包含ses...

  • Android 控件WebView设置Cookie

    引言:网页需要设置登录状态等情形。开发使用过程中自我经验简单记录。时间:2017年03月13日20:53:12作者...

网友评论

      本文标题:webview 设置cookie

      本文链接:https://www.haomeiwen.com/subject/xiqqzttx.html