Класс CookieHandler
Класс CookieHandler является абстрактным классом,
который предоставляет механизм управления cookies
для HTTP-соединений. Он позволяет приложениям
перехватывать и изменять cookies, которые передаются
между клиентом и сервером. Класс не имеет публичных
конструкторов, вместо этого используется статический
метод getDefault для получения текущего
обработчика и метод setDefault для установки
собственной реализации. Абстрактные методы
get и put отвечают соответственно
за получение и сохранение cookies.
Синтаксис
public abstract class CookieHandler
{
public static CookieHandler getDefault()
public static void setDefault(CookieHandler handler)
public abstract Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders) throws IOException
public abstract void put(URI uri, Map<String, List<String>> responseHeaders) throws IOException
}
Пример
Давайте получим текущий обработчик cookies по умолчанию и проверим, установлен ли он:
import java.net.CookieHandler;
public class Main
{
public static void main(String[] args)
{
CookieHandler handler = CookieHandler.getDefault();
System.out.println(handler);
}
}
Результат выполнения кода:
null
Пример
Давайте установим собственный обработчик cookies с помощью анонимного класса и проверим его работу:
import java.net.CookieHandler;
import java.net.URI;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class Main
{
public static void main(String[] args) throws IOException
{
CookieHandler handler = new CookieHandler()
{
@Override
public Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders)
{
System.out.println("Getting cookies for: " + uri);
return Map.of();
}
@Override
public void put(URI uri, Map<String, List<String>> responseHeaders)
{
System.out.println("Putting cookies for: " + uri);
}
};
CookieHandler.setDefault(handler);
CookieHandler current = CookieHandler.getDefault();
System.out.println(current != null);
}
}
Результат выполнения кода:
true
Пример
Давайте вызовем методы get и put
установленного обработчика напрямую:
import java.net.CookieHandler;
import java.net.URI;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class Main
{
public static void main(String[] args) throws IOException
{
CookieHandler handler = new CookieHandler()
{
@Override
public Map<String, List<String>> get(URI uri, Map<String, List<String>> requestHeaders)
{
return Map.of("Cookie", List.of("session=abcde"));
}
@Override
public void put(URI uri, Map<String, List<String>> responseHeaders)
{
System.out.println("Saved cookies: " + responseHeaders);
}
};
CookieHandler.setDefault(handler);
URI uri = URI.create("http://example.com");
Map<String, List<String>> cookies = handler.get(uri, Map.of());
System.out.println(cookies);
handler.put(uri, Map.of("Set-Cookie", List.of("session=12345")));
}
}
Результат выполнения кода:
{Cookie=[session=abcde]}
Saved cookies: {Set-Cookie=[session=12345]}
Смотрите также
-
класс
URI,
который представляет унифицированный идентификатор ресурса -
класс
URL,
который представляет унифицированный указатель ресурса -
класс
Proxy,
который представляет настройки прокси-сервера -
класс
InetAddress,
который представляет IP-адрес