iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >关于Android Webview 设置Cookie问题详解
  • 678
分享到

关于Android Webview 设置Cookie问题详解

2024-04-02 19:04:59 678人浏览 八月长安
摘要

最近遇到一个比较坑爹的问题就是WEBview里添加第三方H5页面,但是数据获取不到,经过一天的折磨发现cookie值每次都会变,再根据谷歌开发者模式定位,cookie每次应该都是固定

最近遇到一个比较坑爹的问题就是WEBview里添加第三方H5页面,但是数据获取不到,经过一天的折磨发现cookie值每次都会变,再根据谷歌开发者模式定位,cookie每次应该都是固定,每次变化说明本地的cookie有问题,或者为空。

webview有一个CookieManager这个类,他是专门管理cookie的,这个类可以设置一个或多个cookie,而且当你在里面设置好cookie以后接口会自动根据你设置时的url来使用。

一共有两种获取cookie的方法一种是HttpURLConnection获取,一种是直接利用CookieManager获取。

第一种根据url利用HttpURLConnection获取接口中的cookie()



    private void syncCookie(final String loginUrl) {
        try {
            StringBuilder builder = new StringBuilder();
            URL url = null;
            byte[] data = builder.toString().getBytes("UTF-8");
            url = new URL(loginUrl);
            HttpURLConnection connection =
                    (HttpURLConnection) url.openConnection();

            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type",
                    "application/x-www-fORM-urlencoded");
            connection.setRequestProperty("Content-Length",
                    Integer.toString(data.length));
            connection.setInstanceFollowRedirects(false);
            connection.setRequestMethod("GET");
            OutputStream os = connection.getOutputStream();
            os.write(data);
            os.close();
            int aRstCode = connection.getResponseCode();
            if (aRstCode == HttpURLConnection.HTTP_OK) {
                cookie = connection.getHeaderField("Set-Cookie");
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

第二种直接利用CookieManager获取


cookieManager.getCookie(url);

这两种返回的cookie是有一些区别的,看你需要哪一种。

设置cookie 允许它跨域


		CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            cookieManager.setAcceptThirdPartyCookies(mWebView, true);//TODO 跨域cookie读取
            Log.d(TAG,"跨域cookie读取");
        }

把cookie设置道webview里



    @SuppressLint("Newapi")
    private void setCookie(String cookie, String url) {
        String StrinGCookie = cookie;
        CookieSyncManager.createInstance(this);
        if (cookieManager == null) {
            cookieManager = CookieManager.getInstance();
        }
        cookieManager.setAcceptFileSchemeCookies(true);
        cookieManager.setAcceptCookie(true);
        if (Android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {//这个代码是清楚webview里的所有cookie加不加完全看你自己。
            cookieManager.removeSessionCookies(null);
            cookieManager.flush();
        } else {
            cookieManager.removeAllCookie();
            CookieSyncManager.getInstance().sync();
        }
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                cookieManager.setCookie(url, StringCookie, new ValueCallback<Boolean>() {
                    @Override
                    public void onReceiveValue(Boolean aBoolean) {
                        Log.d(TAG,"setCookie() aBoolean:"+aBoolean);
                    }
                });
            }
        });
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            cookieManager.flush();
        } else {
            CookieSyncManager.getInstance().sync();
        }
    }

注意 注意 注意:重要的事情说三遍

有些机型只支持单独设置cookie就比如(瞎写的)
session=jashdkjashdkashdk;path=path
如果你直接把这一整串setCookie进入,是设置不进去的,你需要把他们根据分号切割开,一个一个的给它们设置进去。像这种cookieManager.setCookie(url,“session=jashdkjashdkashdk”)(如果你直接设置进去,并且成功了就当我后面说的是废话)

到此这篇关于关于Android Webview 设置Cookie问题详解的文章就介绍到这了,更多相关Android Webview 置Cookie问题内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Android Webview 设置Cookie问题详解

本文链接: https://www.lsjlt.com/news/158407.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Android Webview 设置Cookie问题详解
    最近遇到一个比较坑爹的问题就是webview里添加第三方H5页面,但是数据获取不到,经过一天的折磨发现cookie值每次都会变,再根据谷歌开发者模式定位,cookie每次应该都是固定...
    99+
    2024-04-02
  • Django中Cookie设置及跨域问题处理详解
    目录什么是Cookie(翻译:曲奇饼干)Cookie怎么来的为什么要用CookieCookie的特点怎么设置CookieCookie常用参数怎么获取CookieCookie跨域问题处...
    99+
    2024-04-02
  • Cookie设置的常见问题及解决方案
    Cookie设置的常见问题及解决方案,需要具体代码示例 随着互联网的发展,Cookie作为一种最常见的常规技术,已经广泛应用于网站和应用程序中。Cookie,简单来说,是一种存储在用户计算机上的数据文件,可用于存储用户在网站上的...
    99+
    2024-01-19
    解决方案 cookie 设置
  • 详解 WebView 与 JS 交互传值问题
    随着混合开发模式比较流行,很多时候,我们需要在原生的基础上,使用 WebView 加载网页,这样控制更加方便。今天我们来看看,如何将 Java 对象 和 List 集合传值给 JS 调用。如何将 Java 对象实例传值给 JS其实将我们在 ...
    99+
    2023-05-31
    webview js 传值
  • 关于SpringCloudStream配置问题
    目录SpringCloudStream配置Stream配置Kafka绑定器配置总结SpringCloudStream配置 以下配置摘自《SpringCloud微服务实战》,配置主要包...
    99+
    2022-12-28
    SpringCloudStream配置 SpringCloudStream
  • 关于Android Studio Http Proxy设置
    对敌人最大的蔑视就是沉默。--鹿丸 我们使用Android Studio  开始构建的时候会有卡顿的情况,甚至死机,也就是所谓的【android studio】构建卡住问题,如果依赖库类都是国内的,检查是否开启了代理    这个地方选...
    99+
    2023-09-22
    android
  • Android 解决WebView无法上传文件的问题
    Android 解决WebView无法上传文件的问题Android原生的WebView并不支持上传文件,需要我们自己实现相应的方法。于是我把工作中的相关代码记录下来。下次直接拿来用就行了。一点一滴都是经验。 1。需要定义三个变量 priva...
    99+
    2023-05-30
    android webview roi
  • Go语言读取,设置Cookie及设置cookie过期方法详解
    Cookie用来解决http协议无状态的问题。 首先,在服务端生成Cookie,然后在http响应header中设置Set-Cookie字段,客户端会读取到Set-Cookie字段后...
    99+
    2024-04-02
  • php中关于token验证的相关问题详解
    目录token验证首先是为什么用?那么怎么用呢?token的组成一般 token 组成:JWT 组成:标准的组成:总结token验证 什么是token?我相信很多开发者都或多或少听过...
    99+
    2023-05-20
    php token验证 php token生成和验证 php接口验证token源码
  • Android如何解决WebView多进程崩溃的问题
    小编给大家分享一下Android如何解决WebView多进程崩溃的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题在android 9.0系统上如果多个进程...
    99+
    2023-06-14
  • 关于java中线程安全问题详解
    目录一、什么时候数据在多线程并发的环境下会存在安全问题?二、怎么解决线程安全问题?三、银行 取钱/存钱 案例为什么会出现线程安全问题四、总结 一、什么时候数据在多线程并发的环境下会存...
    99+
    2024-04-02
  • Android时间设置问题怎么解决
    这篇文章主要讲解了“Android时间设置问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android时间设置问题怎么解决”吧!问题现象最近处理了一个非常有意思的系统bug,修改...
    99+
    2023-07-05
  • vue3 关于reactive的重置问题及解决
    目录关于reactive的重置问题理解vue3中的reactive1.什么是reactive2.reactive注意点关于reactive的重置问题 在vue3的reactive的使...
    99+
    2024-04-02
  • 关于springboot2.4跨域配置问题
     1、如果只是一个简单的springboot demo,用以下配置就行 新建config类 ``` import org.springframework.context...
    99+
    2024-04-02
  • 详解Androidstudio3.0 关于Gradle报错的问题(小结)
    前言升级Android Studio to 3.0 canary 1版本后,之前一个正常的Project,一直报错,报错内容如下Error:Failed to complete Gradle execution.Cause:The vers...
    99+
    2023-05-30
    android studio 3.0
  • Vue项目如何设置反向代理和cookie设置问题
    目录Vue设置反向代理和cookie设置项目场景问题描述原因分析解决方案Vue项目使用js-cookie细则什么是js-cookie在项目中进行安装在项目中的入口文件(main.js...
    99+
    2024-04-02
  • 关于android升级到targetSdkVersion 33 构建问题
    控制台日志: Can't read [/Users/imac/Library/Android/sdk/platforms/android-33/optional/android.car.jar] (Can't process class [...
    99+
    2023-09-09
    android
  • Android webView加载数据时内存溢出问题及解决
    目录Android webView加载数据时内存溢出Android内存问题 (内存溢出 内存泄漏 内存抖动)总结Android webView加载数据时内存溢出 今天使用webVie...
    99+
    2022-12-08
    Android webView webView加载数据 webView内存溢出
  • 跨域设置Cookie失效问题解决方案原理分析
    目录问题出现场景代码实现如下登陆接口相关代码问题出现的解决方案如下反思和结语问题出现场景 在做登录功能时,想把用户的信息通过Set-cookie在客户端设置cookie信息。 1.服...
    99+
    2024-04-02
  • Vue中关于this指向的问题示例详解
    目录由Vue管理的函数不被vue管理的函数this指向大致分类总结在Vue中,方法体里用this调用vue实例的数据,有时会指向window,导致调用失败报错。 由Vue管理的函数 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作