정의
- java.net.HttpURLConnection = Java에서 URL 요청을 위한 클래스
- 데이터의 타입 및 길이 제한 거의 X → 데이터의 길이를 예상하기 어려운 스트리밍 데이터를 교환할 때 주로 사용
- 서버가 연결을 종료하기 전에 동일한 클라이언트에서 다시 연결할 경우 기존에 연결된 소켓을 재사용
주요 메소드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpPostExample {
public static void main(String[] args) throws IOException {
// 서버 URL 설정
String serverUrl = "http://example.com/api/post-endpoint";
// POST 요청할 데이터
String postData = "key1=value1&key2=value2";
// URL 객체 생성
URL url = new URL(serverUrl);
// HttpURLConnection 객체 생성
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
try {
// HTTP 요청 메소드 설정
conn.setRequestMethod("POST");
// OutputStream을 이용하여 데이터를 서버에 전송
conn.setDoOutput(true); // 데이터를 서버에 전송하겠다고 설정
OutputStream outputStream = connection.getOutputStream();
outputStream.write(postData.getBytes("UTF-8"));
outputStream.flush();
outputStream.close();
// 응답 코드 확인
int responseCode = conn.getResponseCode();
System.out.println("HTTP 응답 코드: " + responseCode);
// 응답 데이터 읽기
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
// 응답 데이터 출력
System.out.println("서버 응답 데이터: " + sb.toString());
} finally {
// 연결 종료
connection.disconnect();
}
}
}
- disconnect() = 연결 종료
- setRequestMethod() = HTTP Method 설정 (HttpURLConnection은 기본적으로 GET을 사용)
- setRequestProperty(key, value) = HTTP 요청 헤더 설정 (Content-type, Cookie 등)
- setDoOutput(true/false) = 서버로 데이터를 전송할 지에 대한 여부 설정
- getHeaderField() = HTTP 응답 헤더 조회
- getInputStream(), getOutputStream() = 입/출력 스트림 획득
- getResponseCode(), getResponseMessage() = 서버로부터 응답 코드/메시지 획득
'Java' 카테고리의 다른 글
| java.io.File (0) | 2023.12.20 |
|---|---|
| java.io.InputStream & OutputStream (0) | 2023.12.20 |
| java.io.Reader & Writer (0) | 2023.12.20 |
| java.util.Properties (0) | 2023.12.19 |
| BufferedReader/BufferedWriter (0) | 2023.12.19 |
댓글