[java] HttpClient를 사용하여 웹 서버의 응답에 대한 캐시를 설정하는 방법은?
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class HttpClientCachingExample {
public static void main(String[] args) throws IOException {
// HttpClient 인스턴스 생성
CloseableHttpClient httpClient = HttpClients.createDefault();
// GET 요청 생성
HttpGet httpGet = new HttpGet("http://www.example.com");
// 캐시 관련 헤더 설정
httpGet.setHeader("Cache-Control", "max-age=3600"); // 1시간 동안 캐시 유지
// 요청 실행
HttpResponse response = httpClient.execute(httpGet);
// 응답의 상태 코드 확인
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
// 응답 본문(HTML 컨텐츠) 가져오기
HttpEntity entity = response.getEntity();
String responseBody = EntityUtils.toString(entity);
System.out.println(responseBody);
} else {
System.out.println("HTTP GET 요청 실패: " + statusCode);
}
// HttpClient 종료
httpClient.close();
}
}
이 예제에서는 HttpClient를 사용하여 웹 서버에 GET 요청을 보내고, 이에 대한 응답에 대한 캐시를 설정하는 방법을 보여줍니다. httpGet.setHeader("Cache-Control", "max-age=3600");
코드를 통해 캐시의 최대 유효기간을 1시간으로 설정했습니다. 이렇게 설정된 캐시 정보는 서버가 응답을 보낼 때 함께 전달되어 클라이언트 측에서 캐시를 저장하고 재사용할 수 있게 됩니다.
자세한 내용은 Apache HttpClient의 공식 문서를 참조하시기 바랍니다: https://hc.apache.org/httpcomponents-client-ga/tutorial/html/caching.html