1. 개요

이 짧은 사용방법(예제)에서는 Apache HttpClient 응답에서 쿠키를 가져오는 방법을 살펴보겠습니다. 

먼저 HttpClient 요청으로 사용자 지정 쿠키를 보내는 방법을 보여줍니다 . 그러면 응답에서 어떻게 받는지 알아보겠습니다.

여기에 제공된 코드 예제는 HttpClient 4.3.x 이상을 기반으로 하므로 이전 버전의 API에서는 작동하지 않습니다.

2. 요청에 쿠키 보내기

응답에서 쿠키를 가져오기 전에 쿠키를 만들고 요청으로 보내야 합니다.

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 인스턴스를 만듭니다 . 마지막으로 생성된 컨텍스트를 execute() 메서드에 대한 인수로 전달합니다 .

3. 쿠키 접근

이제 요청에서 사용자 지정 쿠키를 보냈으므로 응답에서 쿠키를 읽는 방법을 살펴보겠습니다.

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());
    }
}

응답에서 사용자 지정 쿠키를 얻으려면 먼저 컨텍스트에서 쿠키 저장소를 가져와야 합니다. 그런 다음 getCookies 메서드를 사용 하여 쿠키 List을 가져옵니다. 그런 다음 Java 스트림  을 사용하여 이를 반복하고 쿠키를 검색할 수 있습니다. 또한 스토어의 모든 쿠키 이름을 기록합니다.

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

4. 결론

이 기사에서는 Apache HttpClient 응답에서 쿠키를 가져오는 방법을 배웠습니다.

항상 그렇듯이 코드는 GitHub 에서 사용할 수 있습니다 .

HTTPClient footer