鴻蒙OS CookieManager

2022-06-07 14:22 更新

CookieManager

java.lang.Object

|---java.net.CookieHandler

|---|---java.net.CookieManager

public class CookieManager
extends CookieHandler

CookieManager 提供了 CookieHandler 的具體實(shí)現(xiàn),它將 cookie 的存儲(chǔ)與接受和拒絕 cookie 的策略分開。 CookieManager 使用管理存儲(chǔ)的 CookieStore 和 CookiePolicy 對(duì)象進(jìn)行初始化,該對(duì)象對(duì) cookie 接受/拒絕做出策略決策。

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

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

  • CookieHandler 是 cookie 管理的核心。 用戶可以調(diào)用 CookieHandler.setDefault 來設(shè)置要使用的具體 CookieHanlder 實(shí)現(xiàn)。
  • CookiePolicy.shouldAccept 將由 CookieManager.put 調(diào)用,以查看是否應(yīng)接受一個(gè) cookie 并將其放入 cookie 存儲(chǔ)中。 用戶可以使用三個(gè)預(yù)定義的 CookiePolicy 中的任何一個(gè),即 ACCEPT_ALL、ACCEPT_NONE 和 ACCEPT_ORIGINAL_SERVER,或者用戶可以定義自己的 CookiePolicy 實(shí)現(xiàn)并告訴 CookieManager 使用它。
  • CookieStore 是存儲(chǔ)任何接受的 HTTP cookie 的地方。如果在創(chuàng)建時(shí)未指定,CookieManager 實(shí)例將使用內(nèi)部?jī)?nèi)存實(shí)現(xiàn)。 或者用戶可以實(shí)現(xiàn)一個(gè)并告訴 CookieManager 使用它。
  • 目前,CookieManager 僅使用 CookieStore.add(URI, HttpCookie) 和 CookieStore.get(URI)。 其他是為了完整性,可能需要更復(fù)雜的 CookieStore 實(shí)現(xiàn),例如 網(wǎng)景CookieSotre。

用戶可以通過多種方式連接自己的 HTTP cookie 管理行為,例如

  • 使用 CookieHandler.setDefault 設(shè)置一個(gè)全新的 CookieHandler 實(shí)現(xiàn)

  • 讓 CookieManager 成為默認(rèn)的 CookieHandler 實(shí)現(xiàn),但實(shí)現(xiàn)用戶自己的 CookieStore 和 CookiePolicy 并告訴默認(rèn) CookieManager 使用它們:

         // this should be done at the beginning of an HTTP session
         CookieHandler.setDefault(new CookieManager(new MyCookieStore(), new MyCookiePolicy()));

  • 讓 CookieManager 成為默認(rèn)的 CookieHandler 實(shí)現(xiàn),但使用自定義的 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());   

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
CookieManager() 創(chuàng)建一個(gè)新的 cookie 管理器。
CookieManager(CookieStore store, CookiePolicy cookiePolicy) 使用指定的 cookie 存儲(chǔ)和 cookie 策略創(chuàng)建一個(gè)新的 cookie 管理器。

方法總結(jié)

修飾符和類型 方法 描述
MapString,ListString get(URI uri, MapString,ListString requestHeaders) 從請(qǐng)求標(biāo)頭中指定 uri 的 cookie 緩存中獲取所有適用的 cookie。
CookieStore getCookieStore() 檢索當(dāng)前的 cookie 存儲(chǔ)。
void put(URI uri, MapString,ListString responseHeaders) 設(shè)置所有適用的 cookie,示例是名為 Set-Cookie2 的響應(yīng)頭字段,存在于 cookie 緩存中的響應(yīng)頭中。
void setCookiePolicy(CookiePolicy cookiePolicy) 設(shè)置此 cookie 管理器的 cookie 策略。
從類 java.net.CookieHandler 繼承的方法
getDefault, setDefault
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

CookieManager

public CookieManager()

創(chuàng)建一個(gè)新的 cookie 管理器。

此構(gòu)造函數(shù)將創(chuàng)建具有默認(rèn) cookie 存儲(chǔ)和接受策略的新 cookie 管理器。 效果同 CookieManager(null, null)。

CookieManager

public CookieManager(CookieStore store, CookiePolicy cookiePolicy)

使用指定的 cookie 存儲(chǔ)和 cookie 策略創(chuàng)建一個(gè)新的 cookie 管理器。

參數(shù):

參數(shù)名稱 參數(shù)描述
store Cookie 管理器使用的 CookieStore。 如果為 null,則 cookie 管理器將使用默認(rèn)值,即內(nèi)存中的 CookieStore 實(shí)現(xiàn)。
cookiePolicy cookie 管理器用作策略回調(diào)的 CookiePolicy 實(shí)例。 如果為 null,將使用 ACCEPT_ORIGINAL_SERVER。

方法詳情

setCookiePolicy

public void setCookiePolicy(CookiePolicy cookiePolicy)

設(shè)置此 cookie 管理器的 cookie 策略。

默認(rèn)情況下,CookieManager 的實(shí)例將具有 cookie 策略 ACCEPT_ORIGINAL_SERVER。 用戶始終可以調(diào)用此方法來設(shè)置另一個(gè) cookie 策略。

參數(shù):

參數(shù)名稱 參數(shù)描述
cookiePolicy cookie 政策。 可以為 null,這對(duì)當(dāng)前的 cookie 策略沒有影響。

getCookieStore

public CookieStore getCookieStore()

檢索當(dāng)前的 cookie 存儲(chǔ)。

返回:

cookie 管理器當(dāng)前使用的 cookie 存儲(chǔ)。

get

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

從類復(fù)制的描述:CookieHandler

從請(qǐng)求標(biāo)頭中指定 uri 的 cookie 緩存中獲取所有適用的 cookie。

作為參數(shù)傳遞的 URI 指定了 cookie 的預(yù)期用途。 特別是該方案應(yīng)反映 cookie 是通過 http、https 發(fā)送還是在其他上下文(如 javascript)中使用。 在 javascript 的情況下,主機(jī)部分應(yīng)反映 cookie 的目的地或它們的來源。

由實(shí)現(xiàn)來考慮 URI 和 cookie 屬性和安全設(shè)置來確定應(yīng)該返回哪些。

HTTP 協(xié)議實(shí)現(xiàn)者應(yīng)確保在添加與選擇 cookie 相關(guān)的所有請(qǐng)求標(biāo)頭之后、發(fā)送請(qǐng)求之前調(diào)用此方法。

指定者:

進(jìn)入類 CookieHandler

參數(shù):

參數(shù)名稱 參數(shù)描述
uri 表示 cookie 的預(yù)期用途的 URI
requestHeaders - 從請(qǐng)求標(biāo)頭字段名稱到表示當(dāng)前請(qǐng)求標(biāo)頭的字段值列表的映射

返回:

從狀態(tài)管理標(biāo)頭(字段名稱為“Cookie”或“Cookie2”)到包含狀態(tài)信息的 cookie 列表的不可變映射

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤

put

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

從類復(fù)制的描述:CookieHandler

設(shè)置所有適用的 cookie,示例是名為 Set-Cookie2 的響應(yīng)頭字段,存在于 cookie 緩存中的響應(yīng)頭中。

指定者:

放入類 CookieHandler

參數(shù):

參數(shù)名稱 參數(shù)描述
uri cookie 的來源 URI
responseHeaders 從字段名稱到表示返回的響應(yīng)標(biāo)頭字段的字段值列表的不可變映射

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)