[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 버전을 기준으로 작성되었습니다. 라이브러리의 버전에 따라서 코드가 다를 수 있으니 주의하시기 바랍니다.
참고 문서:
- Apache HttpComponents: https://hc.apache.org/
- HttpClient: https://hc.apache.org/httpcomponents-client-ga/
- HttpClientContext: https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/protocol/HttpClientContext.html
- CookieStore: https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/CookieStore.html