将 cookie 存储在共享首选项中

2024-06-26

我一直在绞尽脑汁地试图弄清楚这一点:我正在制作一个 HttpsURLConnection 并使用 java.net.cookiemanager 来管理我的 cookie (据我所知,无法使用 android.webkit.cookiemanager 来 HttpUrlConnection/HttpsUrlConnection ? )。我需要将我的长期 cookie 保存到以后的连接中。

可惜我不能使用http://loopj.com/android-async-http/ http://loopj.com/android-async-http/它是 PersistentCookieStore 因为我需要允许不受信任的证书(使用http://abhinavasblog.blogspot.se/2011/07/allow-untrusted-certificate-for-https.html http://abhinavasblog.blogspot.se/2011/07/allow-untrusted-certificate-for-https.html)。我尝试过单独使用他们的 PersistentCookieStore,但他们使用的是 apache cookie,而我使用的是 java.net cookie...

这是我尝试过的:

cManager = new CookieManager(null, CookiePolicy.ACCEPT_ALL);

private void setSharedPreferences(){
    List<HttpCookie> cookies = cManager.getCookieStore().getCookies();

    if (cookies.isEmpty()) {
        Log.d(tag,"no cookies received");
    } else {
        for (int i = 0; i < cookies.size(); i++) {
            if(cookies.get(i).getName().equals("rememberMe")) {
                editor.putString(
                        "rememberMe", cookies.get(i).toString());
                editor.commit();
            }
        }
    }
}

当我在下次应用程序启动时检索 cookie 时:

SharedPreferences sharedPreferences = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
String rememberString = sharedPreferences.getString("rememberMe", "none");

if (!rememberString.equals("none")) {
    Log.d("rememberME är inte", "none!");
    URI uriToCookie = null;
    try {
        uriToCookie = new URI("https://myservername.com");
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    List<HttpCookie> cookieList = HttpCookie.parse(rememberString);
    cManager.getCookieStore().add(uriToCookie, cookieList.get(0));
}

该cookie已添加到cManager,但服务器无法识别。我相信存在某种解析问题。有人得到解决方案吗?


我使用了这部分:

        cookies = ((AbstractHttpClient) httpClient).getCookieStore().getCookies();
        Log.v("Cookie:", cookies.toString());
        if (cookies.isEmpty()) {
        } else {
               for (int i = 0; i < cookies.size(); i++) {
                      if(cookies.get(i).getName().contentEquals("PHPSESSID")) {
                         PHPSESSID = cookies.get(i).getValue();
                      }
                   }
        }

只需使用contentEquals获取域名并让它与urs匹配并存储即可。哦,我使用 PHPSESSID 作为字符串,我将其转储到我的共享首选项中以供稍后使用

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

将 cookie 存储在共享首选项中 的相关文章

随机推荐

  • PyPy/RPython 可以用来生成小型独立可执行文件吗?

    或者 可以使用 PyPy RPython 将 Python 编译 翻译为 C C 不需要 Python 运行时 我试图通过它的 RPython 和 Python 它的运行 它的编译和它的翻译来理解 PyPy 但有些失败 I have a h
  • 将事件处理程序分配给带括号和不带括号的方法之间的区别

    假设您有以下内容 function doStuff code 2 种说法有什么区别 window onload doStuff window onload doStuff 两个语句都立即调用该方法 但如果我使用第一个语句 我可以将 onlo
  • 访问控制器类中的 appsettings.json 值

    无法弄清楚如何读取startup cs之外的appsettings json值 例如 我想做的是在 Layout cshtml 中 从配置中添加站点名称 例如 ViewData SiteName Configuration GetValue
  • 如何在 swift 3 中发布原始数据?

    如果我使用 Postman 发布原始数据 就会收到响应 我正在使用这个代码 var dict Dictionary
  • 如何使用 pandoc 将 HTML 转换为 PDF?

    我需要哪些库 我需要传递哪些命令行参数 我已经安装了 wkhtml2pdf 和 我尝试过运行 pandoc reports 7 report html t pdf o reports 7 report pdf 报告错误如下 To creat
  • 获取上下文菜单的控制

    我有一个如下所示的上下文菜单 A 1 2 3 选择 1 2 或 3 后 我需要访问调用上下文菜单的对象 意思是如果这是 textbox1 的上下文菜单 那么我需要访问该对象 我该怎么做 忘了说了 这是一个WPF应用程序 所以我使用 Syst
  • Pythonlibs3 CMake 和 macOS

    更新2 将以下两行添加到我的 CMake 文件中时 成功找到了 python 3 及其库 这只在终端中工作的原因是因为 CLion 使用其捆绑版本的 CMake 3 6 3 而我的终端使用的更新版本 3 7 2 正确找到了 python F
  • 如何编写一个也接受字符输入的 NES 函数?

    我正在开发一个将字符串作为函数参数的 R 包 现在我想使用非标准评估来允许非字符串输入 另外 为了保持向后兼容性 我想保留函数接受字符串的可能性 哈德利给出了example https cran r project org web pack
  • Android 切换按钮

    通过遵循这个article http ww1 mokasocial com 我能够创建一个由图像组成的切换按钮 我的开关没有任何文字 只有开 关图像 当我的切换按钮创建时 它会被拉伸并失去其比例 如何使其保留其原始大小 这些是我使用的图像
  • 打开多个 Excel 文件时检查特定 Excel 文件是否打开并激活它

    编辑 在将特定 Excel 文件或其窗口放在前面之前 我需要检查它是否正在运行 仍然打开 老问题 我想将特定的 Excel 窗口设置在前面 使用此 VBScript 代码 我可以通过名称激活一个 Excel 窗口 但由于打开了多个 Exce
  • 使用 Figaro 和 Secrets.yml 管理环境变量

    我有一个 Rails 4 1 应用程序 我正在尝试组织我的环境变量 截至目前 我的 config 文件夹中有一个 Secrets yml 文件 我还安装了费加罗宝石 我的目标是将所有环境变量放在 application yml 未签入 gi
  • 有人让 memcached 在 Laravel Homestead php7 盒子上工作吗?

    我在新的 Homestead php7 盒子上加载了 Laravel Lumen 并遇到了这个错误 FatalThrowableError in MemcachedConnector php line 51 Fatal error Clas
  • 为什么 CompletableFuture.allOf 声明为 CompletableFuture

    Why is CompletableFuture allOf声明为CompletableFuture
  • 找出网络上所有活动机器的IP

    如何找到 LAN 上所有当前活动计算机的 IP 如何编写一个可以在任何子网上运行的通用程序 我目前正在这样做 尝试 isReachable 是否到达我子网上的所有机器 如果他们这样做 请存储他们的 IP 地址 无论如何 是否有其他方法可以手
  • 根据 Google Apps 脚本中的另一个数组过滤数组

    我对 JavaScript 相当陌生 可能需要一些帮助来解决我在处理 Google Apps 脚本时遇到的问题 我打算做的是根据数组过滤数据 该数组是从特定工作表中的特定单元格中获取的 其中包含我不想保留在数据中的字符串元素 换句话说 包含
  • 这是在 NHibernate 中急切加载子集合的正确方法吗

    我花了太多时间来找到一种急切加载子集合的好方法 到目前为止 这就是我得到的 它正在工作 但我发现很难相信这是编写此查询的最佳方式 Fact public void EagerLoadQueryOverWithFutureTest const
  • 是否可以使用 struct stat 描述符获取和设置文件名?

    是否可以在获取或设置 重命名 文件名时给出文件的绝对路径 并将 struct stat 实例作为 lstat 函数的参数 正如我在文档结构中发现的那样 struct stat dev t st dev ID of device contai
  • chrome 扩展脚本在某些页面上加载两次甚至更多

    这是我的background js 文件 chrome tabs onUpdated addListener function tabId info tab var sites new Array site2 site1 var url t
  • 重新排列mysql中的主键

    从MySQL表中删除一些行后如何重新排列主键列值 例如 一个包含 4 行数据的表 主键值为 1 2 3 4 当删除第2行和第3行时 第4行的键值变为2 请帮助我找到解决方案 为什么要这样做 你不需要重新排列您的密钥 因为它只是记录的数字和标
  • 将 cookie 存储在共享首选项中

    我一直在绞尽脑汁地试图弄清楚这一点 我正在制作一个 HttpsURLConnection 并使用 java net cookiemanager 来管理我的 cookie 据我所知 无法使用 android webkit cookiemana