on
[Ch02] 1-5. HTTP 클라이언트 만들기
[Ch02] 1-5. HTTP 클라이언트 만들기
1-5. HTTP 클라이언트 만들기
package lesson02.client; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; public class SimpleHttpClient { public static void main(String[] args) throws Exception { // 1. 소켓 및 입출력 스트림 준비 Socket socket = new Socket("www.daum.net", 80); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintStream out = new PrintStream(socket.getOutputStream()); //2. 요청라인 출력 out.println("GET / HTTP/1.1"); //3. 헤더정보 출력 out.println("Host: www.daum.net"); out.println("User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0)" + " AppleWebKit/537.36 (KHTML, like Gecko)" + " Chrome/30.0.1599.101 Safari/537.36"); //4. 공백라인 out.println(); //5. 응답 내용 출력 String line = null; while((line = in.readLine()) != null) { System.out.println(line); } // close() in.close(); out.close(); socket.close(); } }
1) 소켓 및 입출력 스트림 준비
- 접속할 웹 서버는 Daum이고, 웹 서버의 기본 포트인 80을 사용한다
- 그리고 소켓으로 입출력을 하기 위한 객체를 준비한다
2) 요청 라인 출력
- 서버에게 수행할 작업을 알려주는 요청 라인을 보낸다
- 요청의 형식은 GET을 사용한다
- 원하는 자원은 웹 서버 루트 폴더에 있는 기본 문서(/)
- HTTP 프로토콜 1.1 버전을 사용한다
3) 헤더 정보 출력
- 웹 서버에 부가 정보를 보낸다
- 접속하려는 웹 서버의 주소, 요청자의 정보는 크롬 브라우저로 설정한다
- Daum 웹 서버는 Host, User-Agent 만으로도 정상 응답한다
4) 공백 라인 : 요청의 끝을 표시하기 위한 공백 라인
5) 응답 내용 출력 : 서버로부터 받아온 데이터를 라인 단위로 읽고 출력한다
[참고] 프로토콜의 종류
from http://dev-ku.tistory.com/266 by ccl(A) rewrite - 2021-12-10 03:28:14