sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
sitelink5 | |
sitelink6 |
Question
java 의 HttpURLConnection 클래스를 이용하여 데이터를 전송시 URLConnection.setRequestProperty 함수로 파라미터를 전달하는 방식과 OutputStream.write 함수로 파라미터를 전달하는 방식의 차이를 알려줘
Answer
HttpURLConnection 클래스를 이용한 데이터 전송 방식 비교
URLConnection.setRequestProperty() vs OutputStream.write():
1. 데이터 전송 방식:
2. 사용 시나리오:
setRequestProperty()
:- 간단한 키-값 쌍 데이터 전송 (예: 검색어, 로그인 정보)
- 파일 업로드 시 Content-Type 설정
OutputStream.write()
:- 복잡한 데이터 구조 전송 (예: JSON, XML)
- 파일 업로드 시 바이너리 데이터 전송
3. 장점 및 단점:
4. 추가 고려 사항:
- HTTP 메서드 (GET, POST, PUT 등)에 따라 사용 가능한 방식이 다를 수 있습니다.
- 특정 API나 서비스에서 특정 방식만 지원할 수 있습니다.
5. 실제 코드 예시:
setRequestProperty()
:
Java
// URL 설정
URL url = new URL("https://yourls.org/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// HTTP 헤더에 파라미터 추가
connection.setRequestProperty("key1", "value1");
connection.setRequestProperty("key2", "value2");
// HTTP 요청 전송
connection.getInputStream();
OutputStream.write()
:
Java
// URL 설정
URL url = new URL("https://yourls.org/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// HTTP 본문에 파라미터 추가
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
String params = "key1=value1&key2=value2";
OutputStream os = connection.getOutputStream();
os.write(params.getBytes());
os.flush();
// HTTP 요청 전송
connection.getInputStream();
6. 결론:
데이터 전송 방식은 전송할 데이터의 특성과 API/서비스의 요구 사항에 따라 선택해야 합니다.
참고 자료:
- URLConnection.setRequestProperty(): [유효하지 않은 URL 삭제됨])
- OutputStream.write(): [유효하지 않은 URL 삭제됨])
이젠 실로 경이롭기까지 하다.
내가 프로그래머 5년차때부터 만들어 사용했던 Util 패키지가 있는데
거기서 필요에 의해 그간의 세월동안(약 10여년) 함수를 수정하면서
함수 내부에서 사용했던 API들의 용도와 사용 이유조차 알지 못하게 되었는데
위와 같은 질문에 Gemini는 깔끔한 답변을 주었다.
나름 전문가라고 하는 인간의 역할에 대해 다시 생각해보게 하는 순간이다.