본문 바로가기

유틸리티-사이트

cURL을 이용한 데이터 전송

반응형

cURL을 이용하여 다양한 통신 프로토콜에 데이터를 전송할 수 있다.
일반적으로 웹 서비스 개발 시 테스트 및 디버깅 용도로 많이 사용되고 cmd에서 실행 가능하므로
웹 요청에 필요한 배치 작업을 자동화할 수 있다.

옵션


  • -G --get                  GET 데이터를 전송한다.
  • -d --data                POST 데이터를 전송한다.
  • -X --request            요청 method를 지정한다.(기본 값 = POST)
  • -L --location            리다이렉트 페이지를 추적한다.
  • -l --head HTTP          헤더만 출력한다.
  • -O --remote-name file   저장 시 원격 서버의 파일 이름으로 저장한다.
  • -b --cookie               쿠키 값을 전송한다.
  • -k, --insecure           https 사이트를 SSL 인증서 검증없이 연결한다.
  • -H --header             Content-Type을 지정한다.
  • --trace-ascii HTTP    데이터 통신 과정의 상세 정보를 출력한다.


사용 예제



GET 요청
 curl -G http://webisfree.com/action/?param1=value1&m2=value2

POST 요청

예제 ① 
 curl http://test.com/post -d param1=value1 -d param2=value2
예제 ② 
 curl http://test.com/post -d "param1=value1&m2=value2"


SSL 인증서 검증
curl은 https 사이트의 SSL 인증서를 검증한다. 인증서 목록이 없거나 알 수없는 기관에서 발급한 인증서는
다음과 같은 인증서 검증 에러를 발생시킨다.
curl: (77) schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - 신뢰되지 않은 기관에서 인증서 체인을 발급했습니다.
아래처럼 HTTPS 검증을 하지않는 옵션을 사용하거나 인증기관 목록을 추가하여 해결한다.
 curl -k https://test.com/

프로토콜 디버깅
 curl --trace-ascii test.dump http://www.test.com/test

Content-Type 지정

① 폼 데이터 전송 
 curl http://test.com/post -d "param1=value1&m2=value2" -H "Content-Type: application/x-www-form-urlencoded"
① JSON 데이터 전송 
 curl http://test.com/post -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}'

쿠키 값 지정
 curl http://test.com/home -b "JSESSIONID=7A22ABF5FBA40538BD06A97FFA815F7E"



반응형