树叶云鸿蒙OS教程:鸿蒙OS CookieManager

CookieManager

java.lang.Object

|—java.net.CookieHandler

|—|—java.net.CookieManager

public class CookieManager
extends CookieHandler

CookieManager 提供了 CookieHandler 的具体实现,它将 cookie 的存储与接受和拒绝 cookie 的策略分开。 CookieManager 使用管理存储的 CookieStore 和 CookiePolicy 对象进行初始化,该对象对 cookie 接受/拒绝做出策略决策。

java.net 包中的 HTTP cookie 管理如下所示:

                  use
 CookieHandler <------- HttpURLConnection
       ^
       | impl
       |         use
 CookieManager -------> CookiePolicy
             |   use
             |--------> HttpCookie
             |              ^
             |              | use
             |   use        |
             |--------> CookieStore
                            ^
                            | impl
                            |
                  Internal in-memory implementation

  • CookieHandler 是 cookie 管理的核心。 用户可以调用 CookieHandler.setDefault 来设置要使用的具体 CookieHanlder 实现。
  • CookiePolicy.shouldAccept 将由 CookieManager.put 调用,以查看是否应接受一个 cookie 并将其放入 cookie 存储中。 用户可以使用三个预定义的 CookiePolicy 中的任何一个,即 ACCEPT_ALL、ACCEPT_NONE 和 ACCEPT_ORIGINAL_SERVER,或者用户可以定义自己的 CookiePolicy 实现并告诉 CookieManager 使用它。
  • CookieStore 是存储任何接受的 HTTP cookie 的地方。如果在创建时未指定,CookieManager 实例将使用内部内存实现。 或者用户可以实现一个并告诉 CookieManager 使用它。
  • 目前,CookieManager 仅使用 CookieStore.add(URI, HttpCookie) 和 CookieStore.get(URI)。 其他是为了完整性,可能需要更复杂的 CookieStore 实现,例如 网景CookieSotre。

用户可以通过多种方式连接自己的 HTTP cookie 管理行为,例如

  • 使用 CookieHandler.setDefault 设置一个全新的 CookieHandler 实现
  • 让 CookieManager 成为默认的 CookieHandler 实现,但实现用户自己的 CookieStore 和 CookiePolicy 并告诉默认 CookieManager 使用它们:
         // this should be done at the beginning of an HTTP session
         CookieHandler.setDefault(new CookieManager(new MyCookieStore(), new MyCookiePolicy()));

  • 让 CookieManager 成为默认的 CookieHandler 实现,但使用自定义的 CookiePolicy:
         // this should be done at the beginning of an HTTP session
         CookieHandler.setDefault(new CookieManager());
         // this can be done at any point of an HTTP session
         ((CookieManager)CookieHandler.getDefault()).setCookiePolicy(new MyCookiePolicy());   

构造函数摘要

构造函数描述
CookieManager()创建一个新的 cookie 管理器。
CookieManager(CookieStore store, CookiePolicy cookiePolicy)使用指定的 cookie 存储和 cookie 策略创建一个新的 cookie 管理器。

方法总结

修饰符和类型方法描述
MapString,ListStringget(URI uri, MapString,ListString requestHeaders)从请求标头中指定 uri 的 cookie 缓存中获取所有适用的 cookie。
CookieStoregetCookieStore()检索当前的 cookie 存储。
voidput(URI uri, MapString,ListString responseHeaders)设置所有适用的 cookie,示例是名为 Set-Cookie2 的响应头字段,存在于 cookie 缓存中的响应头中。
voidsetCookiePolicy(CookiePolicy cookiePolicy)设置此 cookie 管理器的 cookie 策略。
从类 java.net.CookieHandler 继承的方法
getDefault, setDefault
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造函数详细信息

CookieManager

public CookieManager()

创建一个新的 cookie 管理器。

此构造函数将创建具有默认 cookie 存储和接受策略的新 cookie 管理器。 效果同 CookieManager(null, null)。

CookieManager

public CookieManager(CookieStore store, CookiePolicy cookiePolicy)

使用指定的 cookie 存储和 cookie 策略创建一个新的 cookie 管理器。

参数:

参数名称参数描述
storeCookie 管理器使用的 CookieStore。 如果为 null,则 cookie 管理器将使用默认值,即内存中的 CookieStore 实现。
cookiePolicycookie 管理器用作策略回调的 CookiePolicy 实例。 如果为 null,将使用 ACCEPT_ORIGINAL_SERVER。

方法详情

setCookiePolicy

public void setCookiePolicy(CookiePolicy cookiePolicy)

设置此 cookie 管理器的 cookie 策略。

默认情况下,CookieManager 的实例将具有 cookie 策略 ACCEPT_ORIGINAL_SERVER。 用户始终可以调用此方法来设置另一个 cookie 策略。

参数:

参数名称参数描述
cookiePolicycookie 政策。 可以为 null,这对当前的 cookie 策略没有影响。

getCookieStore

public CookieStore getCookieStore()

检索当前的 cookie 存储。

返回:

cookie 管理器当前使用的 cookie 存储。

get

public MapString,ListString get(URI uri, MapString,ListString requestHeaders) throws IOException

从类复制的描述:CookieHandler

从请求标头中指定 uri 的 cookie 缓存中获取所有适用的 cookie。

作为参数传递的 URI 指定了 cookie 的预期用途。 特别是该方案应反映 cookie 是通过 http、https 发送还是在其他上下文(如 javascript)中使用。 在 javascript 的情况下,主机部分应反映 cookie 的目的地或它们的来源。

由实现来考虑 URI 和 cookie 属性和安全设置来确定应该返回哪些。

HTTP 协议实现者应确保在添加与选择 cookie 相关的所有请求标头之后、发送请求之前调用此方法。

指定者:

进入类 CookieHandler

参数:

参数名称参数描述
uri表示 cookie 的预期用途的 URI
requestHeaders– 从请求标头字段名称到表示当前请求标头的字段值列表的映射

返回:

从状态管理标头(字段名称为“Cookie”或“Cookie2”)到包含状态信息的 cookie 列表的不可变映射

Throws:

Throw名称Throw描述
IOException如果发生 I/O 错误

put

public void put(URI uri, MapString,ListString responseHeaders) throws IOException

从类复制的描述:CookieHandler

设置所有适用的 cookie,示例是名为 Set-Cookie2 的响应头字段,存在于 cookie 缓存中的响应头中。

指定者:

放入类 CookieHandler

参数:

参数名称参数描述
uricookie 的来源 URI
responseHeaders从字段名称到表示返回的响应标头字段的字段值列表的不可变映射

Throws:

Throw名称Throw描述
IOException如果发生 I/O 错误

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/180643.html<

(0)
运维的头像运维
上一篇2025-03-27 03:07
下一篇 2025-03-27 03:09

相关推荐

  • hypervmart是什么,hypervmart官网入口

    hypervmart 在 2026 年是否值得投资?核心结论:是,但需精准匹配供应链场景hypervmart 作为 2026 年跨境零售与 B2B 融合的新兴平台,其核心价值在于利用 AI 驱动的供应链优化技术,为中小卖家提供低于行业平均 15% 的履约成本,但成功与否高度依赖卖家对“跨境物流时效”与“海外仓选……

    2026-05-02
    0
  • RAKsmart独立服务器2026年测评,CN2 GIA实测数据与性能表现,CN2 GIA服务器到底怎么样,CN2 GIA独立服务器推荐

    RAKsmart 独立服务器在 2026 年已确立为连接中国内地与全球的高性能网络枢纽,其 CN2 GIA 线路实测延迟稳定在 35ms 以内,吞吐量突破 900Mbps,是跨境业务场景下兼顾稳定性与性价比的优选方案,核心网络性能深度解析2026 年 CN2 GIA 线路实测数据在 2026 年的网络架构中,R……

    2026-05-02
    0
  • hosteonsVPS测评,实测体验,hosteonsVPS怎么样?

    Hosteons VPS 在 2026 年的实测表现显示,其依托全球 BGP 线路优化与 NVMe 全闪存架构,在亚洲至北美跨洋延迟控制上表现优异,是追求高性价比与稳定性的中小型企业首选,但需注意其部分机房在晚高峰期的波动风险,核心性能与网络架构深度解析在 2026 年云计算基础设施全面向 AI 算力与边缘计算……

    2026-05-02
    0
  • BaCloud独立服务器测评不限流量实测表现,BaCloud独立服务器不限流量怎么样

    2026 年实测结论:BaCloud 独立服务器在不限流量场景下表现优异,特别适合高并发视频流媒体与大数据传输业务,其性价比与稳定性在同类竞品中处于第一梯队,但需关注其节点覆盖密度,在 2026 年云计算市场进入存量博弈与精细化运营并存的阶段,企业用户对于“不限流量”的诉求已从单纯的带宽大小转向实际吞吐能力与计……

    2026-05-02
    0
  • 香港旅游好去处,香港自由行攻略,香港签证怎么办理

    2026 年香港作为全球顶级金融与科创枢纽,其核心优势在于“一国两制”下的资金自由流动、低税率环境及与国际市场无缝对接的法治体系,是跨境企业布局亚太的首选地,2026 香港宏观环境:政策红利与产业格局进入 2026 年,香港在巩固国际金融中心地位的同时,正加速向“国际创新科技中心”转型,根据香港特区政府统计处及……

    2026-05-02
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注