- [Java] 104. HTTP 통신 도전 과제: 바이트 스트림 변환2024년 06월 03일
- Song hyun
- 작성자
- 2024.06.03.:03
728x90반응형[Java] 104. HTTP 통신 도전 과제: 바이트 스트림 변환
도전과제-순수 자바 코드 HTTP 서버: 바이트 기반 스트림을 문자 기반 스트림으로 변경해서, HTTP 응답 메세지를 내려 보자.
더보기package ch01; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.InetSocketAddress; import com.sun.net.httpserver.*; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpServer; public class Practice1 { public static void main(String[] args) { try { HttpServer httpServer=HttpServer.create(new InetSocketAddress(8080),0); httpServer.createContext("/test",new MyTestHandler()); httpServer.createContext("/hello",new ch01.Practice1.MyTestHandler.HelloHandler()); httpServer.start(); System.out.println(">> My Http Server started on port 8080"); } catch (IOException e) { e.printStackTrace(); } } // end of main static class MyTestHandler implements HttpHandler{ @Override public void handle(HttpExchange exchange) throws IOException { String method = exchange.getRequestMethod(); System.out.println("method : " + method); if("GET".equalsIgnoreCase(method)) { // Get 요청시 이라면 여기 동작 // System.out.println("여기는 Get 방식으로 호출 됨"); //GET -> path: /test 라고 들어오면 어떤 응답 처리를 내려 주면 된다. handleGetRequest(exchange); } else if("POST".equalsIgnoreCase(method)) { // Post 요청시 여기 동작 // System.out.println("여기는 Post 방식으로 호출 됨"); handlePostRequest(exchange); } else { // 지원하지 않는 메서드에 대한 응답 String respnose = "Unsupported Methdo : " + method; exchange.sendResponseHeaders(405, respnose.length()); // Method Not Allowed // 예시 // new OutputStreamWriter(exchange.getResponseBody()); OutputStreamWriter os = new OutputStreamWriter(exchange.getResponseBody()); os.write(respnose); os.flush(); os.close(); } } // Get 요청시 동작 만들기 private void handleGetRequest(HttpExchange exchange) throws IOException{ String response=""" <!DOCTYPE html> <html lang=ko> <head></head> <body> <h1 style="background-color:red"> Hello path by /test </h1> </body> </html> """; exchange.sendResponseHeaders(200,response.length()); OutputStreamWriter os = new OutputStreamWriter(exchange.getResponseBody()); os.write(response); os.flush(); os.close(); } private void handlePostRequest(HttpExchange exchange) throws IOException{ String response=""" <!DOCTYPE html> <html lang=ko> <head></head> <body> <h1 style="background-color:red"> Hello path by /test </h1> </body> </html> """; exchange.setAttribute("Content-Type", "text/html; chatset=UTF-"); exchange.sendResponseHeaders(200, response.length()); OutputStreamWriter os = new OutputStreamWriter(exchange.getResponseBody()); os.write(response); os.flush(); os.close(); } // end of MyTestHandler static class HelloHandler implements HttpHandler{ @Override public void handle(HttpExchange exchange) throws IOException { String method=exchange.getRequestMethod(); System.out.println("hello method : "+method); } } // end of HelloHandler }}
728x90반응형'Java > 네트워크 통신' 카테고리의 다른 글
[Java] 106. 연습 문제: 오픈 API 사용해보기 (0) 2024.06.04 [Java] 105. 공공 데이터 포탈 사용하기 (0) 2024.06.04 [Java] 103. 순수 자바 코드로 HTTP 서버 만들기 (0) 2024.06.03 [Java] 102. 소켓을 활용한 HTTP 통신 (0) 2024.06.03 [Java] 100. 네트워크 프로토콜 (0) 2024.05.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)