Класс CookieManager
public class CookieManager extends CookieHandler
CookieHandler, которая отделяет хранение куки от политики, определяющей принятие и отказ от куки. CookieManager инициализируется с CookieStore, который управляет хранением, и объектом CookiePolicy, который принимает решения о принятии/отклонении куки. Управление куки HTTP в пакете java.net выглядит следующим образом:
use CookieHandler <------- HttpURLConnection ^ | impl | use CookieManager -------> CookiePolicy | use |--------> HttpCookie | ^ | | use | use | |--------> CookieStore ^ | impl | Internal in-memory implementation
- CookieHandler находится в основе управления куки. Пользователь может вызвать CookieHandler.setDefault для установки конкретной реализации CookieHandler, которая будет использоваться.
- CookiePolicy.shouldAccept будет вызываться CookieManager.put, чтобы определить, следует ли принимать и добавлять куки в хранилище куки. Пользователь может использовать любые три предварительно определённые CookiePolicy: ACCEPT_ALL, ACCEPT_NONE и ACCEPT_ORIGINAL_SERVER, или он может определить собственную реализацию CookiePolicy и указать CookieManager использовать её.
- CookieStore — это место, где хранятся все принятые HTTP куки. Если при создании не указано иное, экземпляр CookieManager будет использовать внутреннюю реализацию в оперативной памяти. Либо пользователь может реализовать собственную и указать CookieManager использовать её.
- В настоящее время CookieManager использует только CookieStore.add(URI, HttpCookie) и CookieStore.get(URI). Другие методы предназначены для полноты и могут потребоваться более сложной реализации CookieStore, например, NetscapeCookieStore.
Существует несколько способов, с помощью которых пользователь может подключить своё собственное поведение управления куки HTTP, например:
- Используйте 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());
Реализация соответствует RFC 2965, раздел 3.3.
- С момента:
- 1.6
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
CookieManager() |
Создает новый менеджер куки. |
CookieManager |
Создает новый менеджер куки с указанным хранилищем куки и политикой куки. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Map<String, |
get |
Получает все применимые куки из кэша куки для указанного uri в заголовке запроса. |
CookieStore |
getCookieStore() |
Получить текущее хранилище куки. |
void |
put |
Устанавливает все применимые куки, например, поля заголовков ответа, которые называются Set-Cookie2, присутствующие в заголовках ответа, в кэш куки. |
void |
setCookiePolicy |
Устанавливает политику куки для этого менеджера куки. |
Методы, объявленные в классе java.net.CookieHandler
getDefault, setDefault
Подробное описание конструкторов
CookieManager
public CookieManager()
Этот конструктор создаст новый менеджер куки с хранилищем куки по умолчанию и политикой принятия. Эффект такой же, как CookieManager(null, null).
CookieManager
public CookieManager(CookieStore store, CookiePolicy cookiePolicy)
- Параметры:
-
store-CookieStore, используемый менеджером куки. Еслиnull, менеджер куки будет использовать хранилище куки по умолчанию, которое является реализацией CookieStore в оперативной памяти. -
cookiePolicy- экземплярCookiePolicyдля использования менеджером куки в качестве обратного вызова политики. Еслиnull, будет использоваться ACCEPT_ORIGINAL_SERVER.
Подробное описание методов
setCookiePolicy
public void setCookiePolicy(CookiePolicy cookiePolicy)
У экземпляра CookieManager по умолчанию политика куки ACCEPT_ORIGINAL_SERVER. Пользователи всегда могут вызвать этот метод для установки другой политики куки.
- Параметры:
-
cookiePolicy- политика куки. Может бытьnull, которая не влияет на текущую политику куки.
getCookieStore
public CookieStore getCookieStore()
- Возвращает:
- хранилище куки, в настоящее время используемое менеджером куки.
get
public Map<String,List<String>> get(URI uri, Map<String,List<String>> requestHeaders) throws IOException
CookieHandlerПереданный в качестве аргумента URI определяет предполагаемое использование куки. В частности, схема должна отражать, будут ли куки отправлены по http, https или использованы в другом контексте, например, javascript. Часть host должна отражать либо место назначения куки, либо их происхождение в случае javascript.
Реализация должна учитывать URI и атрибуты куки и настройки безопасности, чтобы определить, какие из них должны быть возвращены.
Реализации протокола HTTP должны убедиться, что этот метод вызывается после добавления всех заголовков запроса, связанных с выбором куки, и перед отправкой запроса.
- Указано в:
-
getв классеCookieHandler - Параметры:
-
uri-URI, представляющий предполагаемое использование куки -
requestHeaders- - Map из имён заголовков запроса к спискам значений полей, представляющих текущие заголовки запроса - Возвращает:
- неизменяемая карта из заголовков управления состоянием, с именами полей "Cookie" или "Cookie2" до списка куки, содержащих информацию о состоянии
- Исключение:
-
IOException- если произошла ошибка ввода-вывода - См. также:
put
public void put(URI uri, Map<String,List<String>> responseHeaders) throws IOException
CookieHandler- Указано в:
-
putв классеCookieHandler - Параметры:
-
uri-URI, откуда берутся куки -
responseHeaders- неизменяемая карта из имён полей к спискам значений полей, представляющих поля заголовков ответа - Исключение:
-
IOException- если произошла ошибка ввода-вывода - См. также:
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/net/CookieManager.html