HTTP 통신에 대한 이해를 높이기 위해 CURL을 구현합니다.
따라서 완전하게 동작하는 CURL을 만들기보다, HTTP 통신을 이해할 수 있는 수준으로 구현을 하려 합니다.
다양한 프로토콜로 데이터를 전송하는 명령줄 도구로, Http, Https, ftp 등의 프로토콜을 사용할 수 있습니다.
아래는 www.example.com이라는 주소로 Http 요청을 보내는 예시입니다.
// 터미널에서 입력
curl www.example.com
우리는 HTTP의 이해를 돕기 위해 cURL을 만들고 있습니다. 따라서 HTTP 1.1 버전만을 지원할 생각입니다.
아무튼 cURL에는 다양한 기능(옵션)이 존재하는데, 아래 기능들을 구현할 생각입니다.
만약 cURL 자체의 사용법이 궁금하다면 해당 글을 참고하세요.
CURL은 크게 아래 역할들을 필요로 합니다.
테스트에 사용할 Arguments는 -request GET -H accept:*/* -H User-Agent:curl/7.79.1 localhost:8080
입니다.
아래와 같이 세팅이 가능합니다.
인텔리제이 우측 상단의 실행 버튼 왼쪽 버튼을 클릭합니다(아래 사진에서 Main)
파란색 블록을 쳐둔 부분에 위 Arguments를 복사합니다.
다른 Arguments로 사용하고 싶으신 분들은 curl 명령어를 참고해 만들어주세요.
간단하게 CURL 객체부터 잡아두고 가겠습니다. 아래 코드를 복사해서 사용하세요.
package org.kimtaehoondev;
public class Main {
public static void main(String[] args) {
MyCurl myCurl = new MyCurl();
myCurl.run(args);
}
}
package org.kimtaehoondev;
public class MyCurl {
public void run(String[] args) {
// 입력값을 통해 Http 요청을 만든다
// 특정 서버로 해당 요청을 보낸다
// 해당 서버에서 받은 응답을 Http로 만든다
}
}
자, 이제 준비는 다 끝났습니다. 다음 글부터는 CURL을 점차적으로 구현해볼 생각입니다.