[TIL] Java record, HttpClient / HttpRequest / HttpRes…
in TIL on Til, Java Last modified at:
2025-03-09 TIL
📝 TIL (Today I Learned)
🔗 원본 이슈: #25
📅 작성일: 2025-03-09
🔄 최종 수정: 2025년 04월 08일
🍀 새롭게 배운 것
- Java record -> 블로그 정리
- HttpClient, HttpRequest, HttpResponse
✅ Java에서 HttpClient
, HttpRequest
, HttpResponse
활용법과 차이점
Java에서는 HTTP 요청을 보내고 응답을 받기 위해 java.net.http
패키지의 HttpClient
, HttpRequest
, HttpResponse
를 사용합니다.
(Java 11 이상에서 사용 가능)
1️⃣ HttpClient
, HttpRequest
, HttpResponse
개념 및 차이점
클래스 | 역할 | 특징 |
---|---|---|
HttpClient | HTTP 요청을 보내는 역할 | 클라이언트 설정, 요청 실행 (send() ) |
HttpRequest | HTTP 요청을 정의하는 객체 | URL, HTTP 메서드 (GET, POST 등), 헤더 설정 |
HttpResponse | HTTP 응답을 담는 객체 | 서버의 응답 코드, 응답 본문, 헤더 저장 |
2️⃣ 기본 사용법
🔹 HttpClient
를 사용한 GET
요청 예제
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
// 1️⃣ HttpClient 생성
HttpClient client = HttpClient.newHttpClient();
// 2️⃣ HttpRequest 생성 (GET 요청)
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
.GET()
.build();
// 3️⃣ HttpResponse 받기 (동기 방식)
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// 4️⃣ 응답 출력
System.out.println("응답 코드: " + response.statusCode());
System.out.println("응답 본문: " + response.body());
}
}
📌 실행 결과 (예시)
응답 코드: 200
응답 본문: {
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit..."
}
3️⃣ HttpClient
, HttpRequest
, HttpResponse
의 주요 기능
✅ 1. HttpClient
: HTTP 요청을 보내는 역할
HttpClient.newHttpClient()
→ 기본HttpClient
생성HttpClient.newBuilder()
→ 사용자 정의 설정 가능 (타임아웃, 인증 등)send(request, BodyHandlers.ofString())
→ 동기 요청sendAsync(request, BodyHandlers.ofString())
→ 비동기 요청
✅ 2. HttpRequest
: HTTP 요청 정의
.uri(URI.create("URL"))
→ 요청할 URL 지정.GET()
/.POST()
/.PUT()
/.DELETE()
→ HTTP 메서드 설정.header("Header-Name", "value")
→ 헤더 추가.timeout(Duration.ofSeconds(10))
→ 요청 제한 시간 설정
🚀 정리
- 간단한 요청:
send()
- 비동기 요청:
sendAsync()
- JSON 데이터 전송:
POST(BodyPublishers.ofString(json))
- 응답 핸들링:
response.statusCode()
,response.body()