Рубрики
Без рубрики

Как получить cookie-файлы от Apache HttpClient Ответ

Узнайте, как получить и установить файлы cookie из ответа Apache httpClient

Автор оригинала: baeldung.

1. Обзор

В этом коротком учебнике мы увидим, как получить файлы cookie от ответа Apache HttpClient.

Во-первых, мы покажем, как отправить пользовательское печенье с HttpClient просьба. Затем мы увидим, как получить его от ответа.

Обратите внимание, что представленные здесь примеры кода основаны на HttpClient 4.3.x и выше, поэтому они не будут работать над более старыми версиями API.

2. Отправка файлов cookie в запросе

Прежде чем мы сможем получить наше печенье из ответа, мы должны создать его и отправить его в запросе:

BasicCookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("custom_cookie", "test_value");
cookie.setDomain("baeldung.com");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "true");
cookie.setPath("/");
cookieStore.addCookie(cookie);

HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);

try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
    try (CloseableHttpResponse response = httpClient.execute(new HttpGet("http://www.baeldung.com/"), context)) {
        //do something with the response
    }
}

Во-первых, мы создаем базовый магазин печенья и базовый печенье с именем custom_cookie и значение test_value . Затем мы создаем HttpClientContext экземпляр, который будет держать магазин файлов cookie. Наконец, мы перемеем созданный контекст в качестве аргумента в выполнить () метод.

3. Доступ к файлам cookie

Теперь, когда мы отправили пользовательский файл cookie в запросе, давайте посмотрим, как прочитать его из ответа:

HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.COOKIE_STORE, createCustomCookieStore());

try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
    try (CloseableHttpResponse response = httpClient.execute(new HttpGet(SAMPLE_URL), context)) {
        CookieStore cookieStore = context.getCookieStore();
        Cookie customCookie = cookieStore.getCookies()
          .stream()
          .peek(cookie -> log.info("cookie name:{}", cookie.getName()))
          .filter(cookie -> "custom_cookie".equals(cookie.getName()))
          .findFirst()
          .orElseThrow(IllegalStateException::new);

          assertEquals("test_value", customCookie.getValue());
    }
}

Чтобы получить наши пользовательские печенье из ответа, мы должны сначала получить магазин cookie из контекста . Затем мы используем getCookies метод, чтобы получить список файлов cookie. Затем мы можем использовать Java- потоки чтобы итерировать над ним и искать наше печенье. Кроме того, мы вараним все имена файлов cookie из магазина:

[main] INFO  c.b.h.c.HttpClientGettingCookieValueTest - cookie name:__cfduid
[main] INFO  c.b.h.c.HttpClientGettingCookieValueTest - cookie name:custom_cookie

4. Заключение

В этой статье мы узнали, как получить файлы cookie из ответа Apache HttpClient.

Как всегда, код доступен более на GitHub .