오늘은 자바를 이용해서 HTTP 요청을 보내는 방법에 대해서 공부한 것을 정리해보려고 합니다. 단순 문법 정리이므로 간단하게 각 클래스가 어떤 역할을 하는지 이해하고 어떻게 사용하는지만 정리했습니다.
HttpClient , HttpRequest, HttpResponse 클래스
HttpClient , HttpRequest, HttpResponse 는 HTTP 요청을 보내고 해당 요청의 응답을 가져올 때 사용됩니다.
HttpClient 사용법
생성
HttpClient client = HttpClient.newHttpClient();
GET 요청 생성 방법
//HTTP request 생성 방법
httpRequest = HttpRequest.newBuilder()
.uri(URI.create(url)) //url
.header(헤더...) //header
.GET()
.build();
//HTTP 요청 및 응답 가져오기
httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
String responseBody = httpResponse.body();
POST 요청 생성 방법
client = HttpClient.newHttpClient();
httpRequest = HttpRequest.newBuilder()
.uri(URI.create(url))
.header(헤더...)
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
String responseBody = httpResponse.body();
HTTP 요청 보내기
httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
String responseBody = httpResponse.body();
HttpClient 의 send 메서드

HttpClient 의 send 를 통해 HttpRequest 의 내용으로 HTTP 요청을 하게 되는데, 이 메서드는 두 개의 파라미터를 받습니다.
하나는 HttpRequest 객체, 다른 하나는 HttpResonse.BodyHandler<T> 의 객체 입니다.
두 번째 파라미터를 통해 HttpResponse 의 바디의 타입을 결정지을 수 있습니다. 예를 들어서,
httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
String responseBody = httpResponse.body();
HttpResponse.BodyHandlers.ofString() 를 전달하면 HttpResponse 객체의 body()는 String 타입을 반환합니다.
HttpResponse<byte[]> response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
byte[] body = response.body(); // byte[] 타입
HttpResponse.BodyHandlers.ofByteArray() 를 전달하면 HttpResponse 객체의 body()는 byte[] 타입을 반환합니다.
HttpResponse<Path> response = client.send(request, HttpResponse.BodyHandlers.ofFile(Paths.get("output.txt")));
Path body = response.body(); // Path 타입
HttpResponse.BodyHandlers.ofFile(...) 를 전달하면 HttpResponse 객체의 body()는 Path 타입을 반환합니다.
'Programming Language > Java' 카테고리의 다른 글
쓰레드 (0) | 2025.01.07 |
---|---|
자바의 형 변환 (Type Casting) (1) | 2024.12.04 |
오토박싱, 오토박싱의 문제점과 해결방법 (1) | 2024.11.28 |
Java Start (0) | 2024.06.18 |
JVM Execution - 자바 코드가 기계어로 번역되기까지 (2) | 2023.08.27 |