WebView 不接受某些 cookie

2024-01-31

我正在 Webview 中加载一个网站,该网站使用一些 cookie 来存储会话。我写了以下几行来接受cookie

CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().setAcceptCookie(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    CookieManager.setAcceptFileSchemeCookies(true);
    CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}
webView.loadUrl("https://www.irctc.co.in/nget/train-search");

在某一阶段(从支付网关付款后),shouldOverrideUrlLoading方法被调用,之后它应该登陆到交易成功页面,但它继续进入登录页面。这是我的方法:

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    Log.d(TAG, "The URL is loaded in webview itself");
    return false;
}

Using Chrome Developer Tools, I can see following cookies for website Cookies used by website

当我调用方法时CookieManager.getInstance().getCookie(url)我可以看到饼干杰西森ID and SLB_Cookie存在于 webview 中,但不确定本地存储曲奇饼。另外,如果我删除本地存储Chrome 中的 cookie,我得到完全相同的页面(登录页面),而不是像 WebView 这样的交易成功页面。所以我认为,如果我以任何方式检查本地存储 cookie 是否存在于 webview 中,如果不存在,那么如果我添加它,我的工作就完成了。但我无法完成这两项任务。


如果您想将登录用户数据传递到 Webview 中的 cookie,请这样做 前几天我必须将登录对象传递到特定的 URL 如下。

            WebSettings settings = webViewRoi.getSettings();
            settings.setDomStorageEnabled(true);
            settings.setJavaScriptEnabled(true);
            settings.setJavaScriptCanOpenWindowsAutomatically(false);
            settings.setAppCacheEnabled(true);
            settings.setAllowUniversalAccessFromFileURLs(true);
            settings.setAllowFileAccessFromFileURLs(true);

            Gson gson = new GsonBuilder().disableHtmlEscaping().create();


            FormsDTO formsDTO = new FormsDTO();
            FormsDTOProfile dtoProfile = new FormsDTOProfile(LoginActivity.loginInfoDTO.getProfile());
            formsDTO.setProfile(dtoProfile);
            formsDTO.setAuthorized(true);
            formsDTO.setToken(LoginActivity.loginInfoDTO.getToken());

            String out123 = gson.toJson(formsDTO);

            String auth2 = URLEncoder.encode(out123, "UTF-8");

            String z = "userInfo=" + auth2;  // here userinfo is the key of cookie
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.setAcceptCookie(true);


            cookieManager.setCookie(url, z);
            webViewRoi.setWebChromeClient(new WebChromeClient());
            webViewRoi.loadUrl(url);

因此,如果您知道 cookie 的键名,那么您可以通过 cookie 传递您的登录对象。希望对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebView 不接受某些 cookie 的相关文章

随机推荐

  • C# 表单激活和停用事件

    我有两个表单 主表单和子表单 当 mainForm 失去焦点时 我希望 subForm 消失 然后在 mainForm 重新获得焦点时重新出现 我在 mainForm 上使用 Activated 和 Deactivate 事件来跟踪 mai
  • h2内存表,远程连接

    我在创建内存表 使用 H2 数据库以及在创建和运行该表的 JVM 之外访问它时遇到问题 该文档将 url 构造为jdbc h2 tcp
  • 子模块中的 RouteReuseStrategy

    这是我的延迟加载子模块 NgModule imports CommonModule RouterModule forChild acnpRoutes declarations providers provide RouteReuseStra
  • 使用引号作为键的 Bash hashmap

    在 Bash 中 我想取消设置哈希映射的条目 但我失败了 代码如下 declare A arr arr a b 3 echo arr output a b key a b unset arr key error bash unset arr
  • 存储过程中的返回计数

    我编写了一个存储过程来返回计数 但我得到了一个空值 谁能告诉我我的存储过程中的问题出在哪里 set ANSI NULLS ON set QUOTED IDENTIFIER ON go ALTER PROCEDURE dbo Validate
  • 如何在没有安装服务器的情况下设置 MySQL Workbench 的客户端配置?

    假设我在没有服务器的 Windows 7 上安装了 MySQL Workbench 并且正在连接到远程服务器 如何为工作台设置客户端配置 如 my ini 中的 client 部分 或者也许我以错误的方式获取它并且客户端从它连接到的服务器加
  • Java - Spring Ws - 在 XSD 文件中加载相对包含 (Tomcat 8)

    我创建了一个 Spring Web 服务 它使用以下代码从 XSD 文件集合创建动态 WSDL Resource schema new ClassPathResource schema service XCPD SupportMateria
  • Typescript 中的泛型类型返回

    我有一个 Interface find 其中包含方法 cal 类a1和a2实现了该接口 a1 返回数字 a2 返回字符串 我如何定义一个接口来解决我的问题 下面是所提到内容的片段 interface Ifind cal string cla
  • 用于 Docker 的部署 Rails 应用

    阅读了很多资源 但从部署的角度仍然对 Docker 感到困惑 尝试找出 Docker 环境下 Rails 应用程序的最佳实践 特别感兴趣如何解决以下问题 1 从先前部署的容器访问日志 可以停止 销毁该容器 Rsyslog 系统日志 2 回滚
  • 如何在多项选择的表单服务中分配Go_To_Page?

    刚刚开始在 Google Apps 脚本中使用表单服务 需要根据给出的答案引导表单将用户带到特定页面 这是我当前的代码 form addMultipleChoiceItem setTitle What would you like to d
  • JQuery - 获取调用元素 id

    Problem 在自动完成的源函数中 我想获取选择器的 ID 有没有办法可以遍历调用堆栈并得到这个 做JQuery有这个抽象级别吗 Why 我将在页面上有多个自动完成功能 并且每个自动完成功能将在服务器端以不同的方式处理 我必须使用另一个函
  • 仪器中没有出现泄漏,即使我确信它们存在

    我正在检查仪器是否有泄漏 并且我已设置每秒检查一次 但没有出现泄漏 我确信我的应用程序中一定有一些 有什么可以阻止这些出现吗 有没有一种好方法可以创建泄漏 以便我可以测试仪器中是否出现泄漏 Thanks 创建泄漏很容易 id someObj
  • C++17 中的 std::make_shared() 更改

    In cppref http en cppreference com w cpp memory shared ptr make shared 以下情况直到 C 17 才成立 代码如f std shared ptr
  • 有没有类似 CSS 源映射的东西?

    我使用 jQuery 动态地将 CSS 标签添加到页面中 text css appendTo document head 在 Chrome 开发者工具中查看时 所有 CSS 都显示为 localhost 这并不总是有帮助 有没有类似 CSS
  • DataGrid ScrollIntoView - 如何滚动到未显示的第一行?

    我正在尝试向下滚动带有代码的 WPF DataGrid 我用 int itemNum 0 private void Down Click object sender RoutedEventArgs e if itemNum 1 gt dat
  • C++1y 没有从 std::bind 到 std::function 的可行转换

    我正在尝试将转发函数存储到std function 如果我使用std bind 我收到错误消息 例如no viable conversion from 如果我使用 lambda 它编译没问题 这是示例代码 include
  • 输入文本框后台的 jQuery 自动完成

    我有一个 jQuery 文本框自动完成脚本 它使用 PHP 脚本来查询 MySQL 数据库 目前 结果显示在文本框下方 但我希望它看起来就像在文本框中淡出一样 我怎样才能做这样的事情 Google Instant 搜索框就是一个例子 我当前
  • Memcached – GET 和 SET 操作是原子的吗?

    场景如下 一个查询 memcached 缓存的简单网站 批处理作业每 10 15 分钟更新一次相同的缓存 使用该模式是否会出现任何问题 例如缓存未命中 我担心所有可能发生的比赛状况 例如 如果网站对 memcached 中缓存的对象执行 G
  • 以 Scaffold 作为子项的 InheritedWidget 似乎不起作用

    我希望在 Flutter 应用程序的根级别使用 InheritedWidget 以确保经过身份验证的用户的详细信息可供所有子小部件使用 本质上使 Scaffold 成为 IW 的子级 如下所示 override Widget build B
  • WebView 不接受某些 cookie

    我正在 Webview 中加载一个网站 该网站使用一些 cookie 来存储会话 我写了以下几行来接受cookie CookieSyncManager createInstance this CookieSyncManager getIns