[java] HttpClient에서 Cookie를 관리하는 방법은?

Java에서 HttpClient를 사용하여 웹 요청을 보낼 때, 서버로부터 전달받은 Cookie를 관리하는 방법이 필요할 수 있습니다. HttpClient는 Apache HttpComponents 라이브러리의 일부로 제공되며, 다양한 기능을 제공합니다. 이 중 Cookie 관리 기능을 사용하기 위해서는 HttpClient의 CookieStore 인터페이스를 활용하면 됩니다.

아래는 HttpClient를 사용하여 Cookie를 관리하는 예제 코드입니다.

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.BasicHttpContext;

public class HttpClientExample {

    public static void main(String[] args) throws Exception {
        // HttpClient 생성
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // Cookie를 저장할 CookieStore 생성
        BasicCookieStore cookieStore = new BasicCookieStore();

        // HttpClientContext 생성 및 CookieStore 설정
        HttpClientContext context = HttpClientContext.create();
        context.setCookieStore(cookieStore);

        // GET 요청 생성
        HttpGet httpGet = new HttpGet("http://example.com");

        // 요청에 대한 응답 수신
        HttpResponse response = httpClient.execute(httpGet, context);

        // CookieStore에서 저장된 Cookie 조회
        List<Cookie> cookies = cookieStore.getCookies();
        for (Cookie cookie : cookies) {
            System.out.println(cookie.getName() + ": " + cookie.getValue());
        }

        // HttpClient 종료
        httpClient.close();
    }
}

위 코드에서는 HttpClient를 생성하고, BasicCookieStore를 생성하여 Cookie를 저장합니다. 그리고 HttpClientContext를 생성하여 CookieStore를 설정합니다. 이렇게 하면 HttpClient는 요청을 보낼 때마다 Cookie를 관리하게 됩니다. 요청에 대한 응답을 받으면, CookieStore에서 저장된 Cookie들을 조회할 수 있습니다.

이 예제 코드는 Apache HttpComponents 4.5.x 버전을 기준으로 작성되었습니다. 라이브러리의 버전에 따라서 코드가 다를 수 있으니 주의하시기 바랍니다.

참고 문서: