鴻蒙OS CookieManager

2022-06-07 14:22 更新

CookieManager

java.lang.Object

|---java.net.CookieHandler

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

public class CookieManager
extends CookieHandler

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

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

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

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

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

  • 讓 CookieManager 成為默認的 CookieHandler 實現(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)建一個新的 cookie 管理器。
CookieManager(CookieStore store, CookiePolicy cookiePolicy) 使用指定的 cookie 存儲和 cookie 策略創(chuàng)建一個新的 cookie 管理器。

方法總結(jié)

修飾符和類型 方法 描述
MapString,ListString get(URI uri, MapString,ListString requestHeaders) 從請求標(biāo)頭中指定 uri 的 cookie 緩存中獲取所有適用的 cookie。
CookieStore getCookieStore() 檢索當(dāng)前的 cookie 存儲。
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ù)詳細信息

CookieManager

public CookieManager()

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

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

CookieManager

public CookieManager(CookieStore store, CookiePolicy cookiePolicy)

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

參數(shù):

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

方法詳情

setCookiePolicy

public void setCookiePolicy(CookiePolicy cookiePolicy)

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

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

參數(shù):

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

getCookieStore

public CookieStore getCookieStore()

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

返回:

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

get

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

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

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

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

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

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

指定者:

進入類 CookieHandler

參數(shù):

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

返回:

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

Throws:

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

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 錯誤
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號