鴻蒙OS CookieManager

2022-06-07 14:22 更新

CookieManager

java.lang.Object

|---java.net.CookieHandler

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

  1. public class CookieManager
  2. extends CookieHandler

CookieManager 提供了 CookieHandler 的具體實現,它將 cookie 的存儲與接受和拒絕 cookie 的策略分開。 CookieManager 使用管理存儲的 CookieStore 和 CookiePolicy 對象進行初始化,該對象對 cookie 接受/拒絕做出策略決策。

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

  1. use
  2. CookieHandler <------- HttpURLConnection
  3. ^
  4. | impl
  5. | use
  6. CookieManager -------> CookiePolicy
  7. | use
  8. |--------> HttpCookie
  9. | ^
  10. | | use
  11. | use |
  12. |--------> CookieStore
  13. ^
  14. | impl
  15. |
  16. 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 的地方。如果在創(chuàng)建時未指定,CookieManager 實例將使用內部內存實現。 或者用戶可以實現一個并告訴 CookieManager 使用它。
  • 目前,CookieManager 僅使用 CookieStore.add(URI, HttpCookie) 和 CookieStore.get(URI)。 其他是為了完整性,可能需要更復雜的 CookieStore 實現,例如 網景CookieSotre。

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

  • 使用 CookieHandler.setDefault 設置一個全新的 CookieHandler 實現

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

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

  • 讓 CookieManager 成為默認的 CookieHandler 實現,但使用自定義的 CookiePolicy:

  1. // this should be done at the beginning of an HTTP session
  2. CookieHandler.setDefault(new CookieManager());
  3. // this can be done at any point of an HTTP session
  4. ((CookieManager)CookieHandler.getDefault()).setCookiePolicy(new MyCookiePolicy());

構造函數摘要

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

方法總結

修飾符和類型 方法 描述
MapString,ListString get(URI uri, MapString,ListString requestHeaders) 從請求標頭中指定 uri 的 cookie 緩存中獲取所有適用的 cookie。
CookieStore getCookieStore() 檢索當前的 cookie 存儲。
void put(URI uri, MapString,ListString responseHeaders) 設置所有適用的 cookie,示例是名為 Set-Cookie2 的響應頭字段,存在于 cookie 緩存中的響應頭中。
void setCookiePolicy(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()

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

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

CookieManager

public CookieManager(CookieStore store, CookiePolicy cookiePolicy)

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

參數:

參數名稱 參數描述
store Cookie 管理器使用的 CookieStore。 如果為 null,則 cookie 管理器將使用默認值,即內存中的 CookieStore 實現。
cookiePolicy cookie 管理器用作策略回調的 CookiePolicy 實例。 如果為 null,將使用 ACCEPT_ORIGINAL_SERVER。

方法詳情

setCookiePolicy

public void setCookiePolicy(CookiePolicy cookiePolicy)

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

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

參數:

參數名稱 參數描述
cookiePolicy cookie 政策。 可以為 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 發(fā)送還是在其他上下文(如 javascript)中使用。 在 javascript 的情況下,主機部分應反映 cookie 的目的地或它們的來源。

由實現來考慮 URI 和 cookie 屬性和安全設置來確定應該返回哪些。

HTTP 協議實現者應確保在添加與選擇 cookie 相關的所有請求標頭之后、發(fā)送請求之前調用此方法。

指定者:

進入類 CookieHandler

參數:

參數名稱 參數描述
uri 表示 cookie 的預期用途的 URI
requestHeaders - 從請求標頭字段名稱到表示當前請求標頭的字段值列表的映射

返回:

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

Throws:

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

put

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

從類復制的描述:CookieHandler

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

指定者:

放入類 CookieHandler

參數:

參數名稱 參數描述
uri cookie 的來源 URI
responseHeaders 從字段名稱到表示返回的響應標頭字段的字段值列表的不可變映射

Throws:

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號