Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- analytics4
- 애널리틱스4
- github
- 티스토리챌린지
- pat발급
- ANTIFRAGILE
- Python
- TIOBE
- db종류
- visual studio code
- java
- EntityManager
- git branch 삭제
- jetbrain
- 오블완
- 르세라핌
- ci/cd
- docker
- git pat
- gtihub
- 명령어
- JPA
- 자동배포
- MariaDB
- Jenkins
- spring
- UNION ALL
- IntelliJ
- JPQL
Archives
- Today
- Total
hanker
JAVA - HttpUrlConnection, HttpsUrlConnection (Content-Type 설정) (2) 본문
반응형
https://hanke-r.tistory.com/198
이전에 Http/HttpsUrlConnection에서 HttpMethod (Get, Post) 방식을 다뤘었는데, 이번 글에서는 Header에 실어서 보내는 데이터 타입에 대해서 알아보자
header에 실어서 보내는 데이터 타입이라는 말이 어렵게 보이지만 쉽게 얘기하면 "내가 보내는 데이터는 이런 형식이야! " 라고 알려주는 역할을 한다.
Javascript의 Ajax나, react에 axios에서 파일 처리할 때 많이 봤을거라 생각하는데, JAVA에서도 똑같이 사용하면 된다.
1. Content-Type의 역할
클라이언트가 서버에 데이터를 요청하거나 서버가 클라이언트에게 데이터를 응답할 때, 그 데이터가 어떤 형식인지 알려줘야 한다.
2. Content-Type의 구성
Content-Type은 타입(type)과 서브타입(subtype) 두 부분으로 나뉜다 (이 둘은 /로 구분된다)
- 예시: text/html
- 타입: text (문자 데이터라는 뜻)
- 서브타입: html (HTML 형식의 문서라는 뜻)
3. 자주 사용되는 Content-Type 예시
아래는 웹에서 자주 쓰이는 Content-Type의 예이다.
- text/html: HTML 문서일 때 사용. 웹페이지 콘텐츠를 보여줄 때 사용
- application/json: JSON 형식의 데이터를 주고받을 때 사용. 주로 API 통신에서 데이터를 주고받을 때 사용
- text/plain: 일반 텍스트 데이터를 보낼 때 사용. 특별한 형식 없이 그냥 글자만 포함될 때 사용
- application/xml: XML 형식의 데이터를 주고받을 때 사용
- image/jpeg: JPEG 형식의 이미지 파일을 전송할 때 사용
- multipart/form-data: 파일 업로드 시 사용되는 형식으로, 여러 파일이나 데이터를 한 번에 전송있다.
4. 동작 방식
- 클라이언트가 서버에 요청
- 서버는 요청을 처리한 후 응답
- 응답할 때 Content-Type을 사용하여 클라이언트에게 "이 데이터는 이런 형식이야"라고 알려준다.
- 예시: 서버가 HTML 페이지를 보낸다면 Content-Type: text/html이라고 헤더에 포함해서 응답합니다.
- 클라이언트는 이 정보로 데이터를 해석하고, 예를 들어 브라우저라면 HTML을 해석해서 웹 페이지를 렌더링
(렌더링 : HTML,CSS, 자바스크립트 등 개발자가 작성한 문서가 브라우저에서 출력되는 과정)
예제를 보자
예제는 이전글에서 작성된 코드에서 수정해서 작성했다.
public static void main(String[] args) throws Exception {
try {
// 요청할 URL (HTTP)
URL url = new URL("http://127.0.0.1:2000/test");
// HttpURLConnection 객체 생성
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 요청 방식 설정 (GET)
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setDoOutput(true);
// 전송데이터 변경
Map<String, Object> map = new HashMap<>();
map.put("name", "hanker");
ObjectMapper objectMapper = new ObjectMapper();
String jsonInputString = objectMapper.writeValueAsString(map);
// RequestBody 쓰기
try(OutputStream os = connection.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
// 응답 코드 확인
int responseCode = connection.getResponseCode();
System.out.println("Response Code : " + responseCode);
// 응답 데이터를 읽음
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 결과 출력
System.out.println("Response : " + response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
Content-Type이 application/json 방식으로 들어가기 때문에, 전송 데이터를 Map형식으로 변경해줬다.
결과.
끝.
반응형
'JAVA' 카테고리의 다른 글
java.lang.UnsupportedOperationException 에 대해서 (1) | 2024.11.09 |
---|---|
JAVA - 값 비교 (문자열 / 숫자 등등) (0) | 2024.11.08 |
JAVA - 멀티 쓰레드 연산처리 (AtomicInteger) (0) | 2024.10.12 |
JAVA - 멀티쓰레드(Multi Thread) 반복문 병렬처리 방법 (1) | 2024.10.12 |
Java - (Window/Linux) 디렉터리 목록 가져오기 (1) | 2024.09.20 |