-
Apache HttpClient 5 알아보기스터디 노트 2023. 12. 6. 13:25
HTTP(Hypertext Transfer Protocol)는 이제 인터넷에서 가장 중요한 프로토콜 중 하나입니다.
웹 서비스를 구성하는 대표적 아키텍쳐인 마이크로 서비스 등에서 사용하는 통신 규약 프로토콜로 HTTP가 지배적으로 사용되며, HTTP 프로토콜은 웹 브라우저에서 더 광범위한 시나리오로 사용되고 있지요.
Java Enterprise 개발자라면 HTTP를 다루기 위해 여러가지 공부를 해야 합니다.
오늘은 그 중 Apache의 HttpClient 5에 대해 스터디를 해볼까 합니다.
Apache HttpClient 5는 Java에서 HTTP 요청을 보내고 응답을 수신할 수 있도록 기능을 제공하는 라이브러리입니다.
이 라이브러리는 다양한 기능을 제공하여 HTTP 요청과 응답을 보다 쉽게 구현할 수 있도록 해주죠.
Apache HttpClient 5의 기능은 다음과 같습니다.
✅ 다양한 메서드를 활용하여 HTTP 요청을 쉽게 보낼 수 있습니다. 예를 들어 get이나 post, put, delete 메서드를 사용해 HTTP GET, POST, PUT, DELETE 등의 요청을 보낼 수 있습니다.
✅ HTTP 응답을 쉽게 수신할 수 있습니다. getResponse()나 getEntity() 등을 통해 HTTP 응답을 수신할 수 있습니다.
✅ 요청과 응답을 쉽게 제어할 수 있습니다. Apache HttpClient 5는 다양한 옵션을 제공해 HTTP 요청과 응답을 쉽게 제어할 수 있습니다. 예를 들면 timeout, proxy, header, cookie 등을 설정할 수 있습니다.
또한 Apache HttpClient 5는 다양한 Transport 방식을 지원합니다. Transport 방식은 HTTP 요청을 보내고 응답을 수신하는 방법을 결정합니다.
Apache HttpClient 5에서 지원하는 Transport 방식은 다음과 같습니다.
✅ Default : 기본 Transport 방식입니다. Apache HttpCore의 기본 Transport를 사용합니다.
✅ NIO : Non-blocking I/O를 사용하는 Transport 방식입니다.
✅ Pooling : 요청을 처리하기 위해 Pool을 사용하는 Transport 방식입니다.
✅ SSL : SSL을 사용하는 Transport 방식입니다.
✅ HTTP2 : HTTP/2를 사용하는 Transport 방식입니다.
Apache HttpClient 5를 사용하려면 다음의 단계를 확인해주세요.
// 1. 종속성 추가 ... <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>5.2.x</version> </dependency> ... // 클래스 사용하기 import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; public class Main { public static void main(String[] args) throws Exception { // HttpClient를 생성합니다. CloseableHttpClient httpClient = HttpClientBuilder.create().build(); // HTTP GET 요청을 보냅니다. HttpGet httpGet = new HttpGet("https://www.google.com"); CloseableHttpResponse response = httpClient.execute(httpGet); // HTTP 응답을 수신합니다. int statusCode = response.getStatusLine().getStatusCode(); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("statusCode: " + statusCode); System.out.println("responseBody: " + responseBody); } }
'스터디 노트' 카테고리의 다른 글
Ubuntu 환경에서 Logstash와 Opensearch 연동하기 : logstash-input-opensearch Plugin input/output 설정 (0) 2023.12.13 윈도우 10에서 Docker(도커)에 Ubuntu(우분투) 최신 버전 설치하기 (0) 2023.12.13 Optional, 그렇게 쓸꺼야🤔? (1) 2023.12.05 @Transactional 사용 시 주의해야 할 사항들 (1) 2023.12.04 @Transactional 애너테이션에 대하여 (1) 2023.12.04