[linux][curl로 커맨드에서 REST 웹테스트하기]
# CURL
- 명령행 기반 웹 요청 도구.
- 특히 REST 애플리케이션을 개발 테스트시에 유용하게 사용할 수 있다.
curl http://www.xxx.com : 일반 GET 요청
-I : 헤더만 가져오기
-i : 헤더와 바디까지 가져오기
POST
curl -d "param1=xxx¶m2=yyyy¶m3=%20OK%20" www.hotmail.com/when/junki.cgi
URL 인코딩된 파라미터를 앞에 쓰고, 그 뒤에 POST를 처리하는 주소를 넣는다.
파라미터는 무조건 먼저 인코딩 된 상태여야 한다.
POST의 Content-Type 은 application/x-www-form-urlencoded 이다.
파일 업로드
curl -F upload=@파일명 -F press=OK www.xxx.com/blog/post.cgi
-F 폼필드명=@파일명
-F 폼필드명=폼필드값
Content-Type 은 multipart/form-data
Referer 지정
curl -e http://리퍼러주소 daniel.haxx.se
User Agent 지정
curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" http://www.rollinglist.com
Redirect
curl -L www.somesite.com
curl은 기본적으로 Redirect Header를 무시한다.
-L 을 붙이면 redirect 요청을 따라서 다음 페이지로 간다.
-d/-F 옵션을 통해 POST/PUT 요청등을 보내고 나서 redirect가 실행된다면 첫번째 요청은 POST/PUT으로 처리하고, 리다이렉트는 GET으로 처리한다.
Cookies
curl -b "name=Daniel" www.cookiesite.com
Cookie key=value 쌍을 서버로 전송한다.
curl -D headers_and_cookies www.cookiesite.com
사용예제 .....
// encoding 형태로 변환해서 보내기
curl -d "USER_ID=aaa&PASSWORD=test&HP_NO=01011111111&PROC_DATE=20090311&SERVER_NM=TEST&SMS_MSG=test" http://www.aaa.co.kr/aaa.php3
// 아스키값그대로 보내기
curl --data-ascii "USER_ID=aaa&PASSWORD=test&HP_NO=01011111111&PROC_DATE=20090311&SERVER_NM=TEST&SMS_MSG=한글전송테스트 메세지" http://www.aaa.co.kr/aaa.php3
// https 사용 아스키값그대로 보내기
curl --data-ascii "USER_ID=aaa&PASSWORD=test&HP_NO=01011111111&PROC_DATE=20090311&SERVER_NM=TEST&SMS_MSG=한글전송테스트 메세지" -L -k https://www.aaa.co.kr/aaa.php3