curl使用

背景

從curl的一個使用實例說起:
將以下代碼拷貝到命令行即可執(zhí)行

curl -X POST \
  http://jd.dev.imdada.cn/pickup/addOrder/ \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -H 'postman-token: 2f6b7816-cf06-f821-5658-7b6b3df82de2' \
  -d '{
    "batchNo": "Q33100223333",
    "senderName": "上門攬件",
    "senderPhone": "18239922164",
    "senderAddress": "上海浦東新區(qū)隆宇大廈浦東南路1036",
    "orderGoodsList":[{
            "goodsId":"1" ,
            "goodsName": "123222",
            "goodsPrice": 40,
            "goodsCount": 1
        }
    ],
    "deliverCompanyId": "566358",
    "deliverCompanyName": "華北眾包站",
    "sign": "zy"
}'

這是因為mac或者windows中預裝了curl命令行工具指巡。那么curl是什么呢放坏?哪里有用到。

CURL介紹

官方解釋

CURL,全稱Command Line URL Viewer埃篓,是一個Linux命令行工具雷恃,能從服務器下載數(shù)據(jù)疆股,也能往服務器上發(fā)送數(shù)據(jù),支持多種協(xié)議倒槐,支持的協(xié)議有:DICT旬痹,F(xiàn)ILE,F(xiàn)TP讨越,F(xiàn)TPS两残,GOPHER,HTTP把跨,HTTPS人弓,IMAP,IMAPS着逐,LDAP崔赌,LDAPS,POP3耸别,POP3S健芭,RTMP,RTSP秀姐,SCP慈迈,SFTP,SMB囊扳,SMBS吩翻,SMTP兜看,SMTPS,TELNET和TFTP狭瞎。

深入理解

curl是一個廣泛使用的用來上傳和下載的命令行工具细移,當然嚴格來講,它還可以有別的用途熊锭。對于測試來講弧轧,它是Web相關測試非常實用的工具,包括debugging碗殷,使用起來非常方便精绎。而且另一方面,因為它是純命令行的工具锌妻,所以也可以非常方便的作為一個組件集成到automation或者其他的測試框架里面代乃,將HTTP/HTTPS/FTP相關的上傳和下載等任務交給它。
最近因為在做web service相關的測試仿粹,用到了curl搁吓,覺得還不錯,順便給大家介紹一下吭历。

使用方法

基本用法示例

curl http://www.google.com
curl -o f1 ftp://user:pwd@myftp/Ricky/test.ini
curl dict://dict.org/d:test

傳遞請求數(shù)據(jù)

默認curl使用GET方式請求數(shù)據(jù)堕仔,這種方式下直接通過URL傳遞數(shù)據(jù)
可以通過 --data/-d 方式指定使用POST方式傳遞數(shù)據(jù)

# GET
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

# POST
curl -u username --data "param1=value1&param2=value" https://api.github.com

# 也可以指定一個文件,將該文件中的內容當作數(shù)據(jù)傳遞給服務器端
curl --data @filename https://github.api.com/authorizations

除了使用GET和POST協(xié)議外晌区,還可以通過 -X 選項指定其它協(xié)議摩骨,如:

curl -I -X DELETE https://api.github.cim

如果想使用JSON形式post數(shù)據(jù),可以使用-H指定頭部類型

curl -H "Content-Type:application/json"

總結

CURL的命令參數(shù)還有很多朗若,就不一一演示了恼五。下面是CURL的參數(shù)及功能列表:

-a/--append 上傳文件時,附加到目標文件  
 -A/--user-agent <string>  設置用戶代理發(fā)送給服務器  
 - anyauth   可以使用“任何”身份驗證方法  
 -b/--cookie <name=string/file> cookie字符串或文件讀取位置  
 - basic 使用HTTP基本驗證  
 -B/--use-ascii 使用ASCII /文本傳輸  
 -c/--cookie-jar <file> 操作結束后把cookie寫入到這個文件中  
 -C/--continue-at <offset>  斷點續(xù)轉  
 -d/--data <data>   HTTP POST方式傳送數(shù)據(jù)  
 --data-ascii <data>  以ascii的方式post數(shù)據(jù)  
 --data-binary <data> 以二進制的方式post數(shù)據(jù)  
 --negotiate     使用HTTP身份驗證  
 --digest        使用數(shù)字身份驗證  
 --disable-eprt  禁止使用EPRT或LPRT  
 --disable-epsv  禁止使用EPSV  
 -D/--dump-header <file> 把header信息寫入到該文件中  
 --egd-file <file> 為隨機數(shù)據(jù)(SSL)設置EGD socket路徑  
 --tcp-nodelay   使用TCP_NODELAY選項  
 -e/--referer 來源網(wǎng)址  
 -E/--cert <cert[:passwd]> 客戶端證書文件和密碼 (SSL)  
 --cert-type <type> 證書文件類型 (DER/PEM/ENG) (SSL)  
 --key <key>     私鑰文件名 (SSL)  
 --key-type <type> 私鑰文件類型 (DER/PEM/ENG) (SSL)  
 --pass  <pass>  私鑰密碼 (SSL)  
 --engine <eng>  加密引擎使用 (SSL). "--engine list" for list  
 --cacert <file> CA證書 (SSL)  
 --capath <directory> CA目錄 (made using c_rehash) to verify peer against (SSL)  
 --ciphers <list>  SSL密碼  
 --compressed    要求返回是壓縮的形勢 (using deflate or gzip)  
 --connect-timeout <seconds> 設置最大請求時間  
 --create-dirs   建立本地目錄的目錄層次結構  
 --crlf          上傳是把LF轉變成CRLF  
 -f/--fail          連接失敗時不顯示http錯誤  
 --ftp-create-dirs 如果遠程目錄不存在捡偏,創(chuàng)建遠程目錄  
 --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用  
 --ftp-pasv      使用 PASV/EPSV 代替端口  
 --ftp-skip-pasv-ip 使用PASV的時候,忽略該IP地址  
 --ftp-ssl       嘗試用 SSL/TLS 來進行ftp數(shù)據(jù)傳輸  
 --ftp-ssl-reqd  要求用 SSL/TLS 來進行ftp數(shù)據(jù)傳輸  
 -F/--form <name=content> 模擬http表單提交數(shù)據(jù)  
 -form-string <name=string> 模擬http表單提交數(shù)據(jù)  
 -g/--globoff 禁用網(wǎng)址序列和范圍使用{}和[]  
 -G/--get 以get的方式來發(fā)送數(shù)據(jù)  
 -h/--help 幫助  
 -H/--header <line>自定義頭信息傳遞給服務器  
 --ignore-content-length  忽略的HTTP頭信息的長度  
 -i/--include 輸出時包括protocol頭信息  
 -I/--head  只顯示文檔信息  
 從文件中讀取-j/--junk-session-cookies忽略會話Cookie  
 - 界面<interface>指定網(wǎng)絡接口/地址使用  
 - krb4 <級別>啟用與指定的安全級別krb4  
 -j/--junk-session-cookies 讀取文件進忽略session cookie  
 --interface <interface> 使用指定網(wǎng)絡接口/地址  
 --krb4 <level>  使用指定安全級別的krb4  
 -k/--insecure 允許不使用證書到SSL站點  
 -K/--config  指定的配置文件讀取  
 -l/--list-only 列出ftp目錄下的文件名稱  
 --limit-rate <rate> 設置傳輸速度  
 --local-port<NUM> 強制使用本地端口號  
 -m/--max-time <seconds> 設置最大傳輸時間  
 --max-redirs <num> 設置最大讀取的目錄數(shù)  
 --max-filesize <bytes> 設置最大下載的文件總量  
 -M/--manual  顯示全手動  
 -n/--netrc 從netrc文件中讀取用戶名和密碼  
 --netrc-optional 使用 .netrc 或者 URL來覆蓋-n  
 --ntlm          使用 HTTP NTLM 身份驗證  
 -N/--no-buffer 禁用緩沖輸出  
 -o/--output 把輸出寫到該文件中  
 -O/--remote-name 把輸出寫到該文件中唤冈,保留遠程文件的文件名  
 -p/--proxytunnel   使用HTTP代理  
 --proxy-anyauth 選擇任一代理身份驗證方法  
 --proxy-basic   在代理上使用基本身份驗證  
 --proxy-digest  在代理上使用數(shù)字身份驗證  
 --proxy-ntlm    在代理上使用ntlm身份驗證  
 -P/--ftp-port <address> 使用端口地址,而不是使用PASV  
 -Q/--quote <cmd>文件傳輸前银伟,發(fā)送命令到服務器  
 -r/--range <range>檢索來自HTTP/1.1或FTP服務器字節(jié)范圍  
 --range-file 讀饶愫纭(SSL)的隨機文件  
 -R/--remote-time   在本地生成文件時,保留遠程文件時間  
 --retry <num>   傳輸出現(xiàn)問題時彤避,重試的次數(shù)  
 --retry-delay <seconds>  傳輸出現(xiàn)問題時傅物,設置重試間隔時間  
 --retry-max-time <seconds> 傳輸出現(xiàn)問題時,設置最大重試時間  
 -s/--silent靜音模式琉预。不輸出任何東西  
 -S/--show-error   顯示錯誤  
 --socks4 <host[:port]> 用socks4代理給定主機和端口  
 --socks5 <host[:port]> 用socks5代理給定主機和端口  
 --stderr <file>  
 -t/--telnet-option <OPT=val> Telnet選項設置  
 --trace <file>  對指定文件進行debug  
 --trace-ascii <file> Like --跟蹤但沒有hex輸出  
 --trace-time    跟蹤/詳細輸出時董饰,添加時間戳  
 -T/--upload-file <file> 上傳文件  
 --url <URL>     Spet URL to work with  
 -u/--user <user[:password]>設置服務器的用戶和密碼  
 -U/--proxy-user <user[:password]>設置代理用戶名和密碼  
 -v/--verbose  
 -V/--version 顯示版本信息  
 -w/--write-out [format]什么輸出完成后  
 -x/--proxy <host[:port]>在給定的端口上使用HTTP代理  
 -X/--request <command>指定什么命令  
 -y/--speed-time 放棄限速所要的時間。默認為30  
 -Y/--speed-limit 停止傳輸速度的限制,速度時間'秒  
 -z/--time-cond  傳送時間設置  
 -0/--http1.0  使用HTTP 1.0  
 -1/--tlsv1  使用TLSv1(SSL)  
 -2/--sslv2 使用SSLv2的(SSL)  
 -3/--sslv3         使用的SSLv3(SSL)  
 --3p-quote      like -Q for the source URL for 3rd party transfer  
 --3p-url        使用url卒暂,進行第三方傳送  
 --3p-user       使用用戶名和密碼啄栓,進行第三方傳送  
 -4/--ipv4   使用IP4  
 -6/--ipv6   使用IP6  
 -#/--progress-bar 用進度條顯示當前的傳送狀態(tài)

參考

源碼閱讀第二期之curl-7.22.0

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市也祠,隨后出現(xiàn)的幾起案子昙楚,更是在濱河造成了極大的恐慌,老刑警劉巖诈嘿,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堪旧,死亡現(xiàn)場離奇詭異,居然都是意外死亡奖亚,警方通過查閱死者的電腦和手機淳梦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昔字,“玉大人爆袍,你說我怎么就攤上這事±畹危” “怎么了螃宙?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長所坯。 經常有香客問我,道長挂捅,這世上最難降的妖魔是什么芹助? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮闲先,結果婚禮上状土,老公的妹妹穿的比我還像新娘。我一直安慰自己伺糠,他們只是感情好蒙谓,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著训桶,像睡著了一般累驮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舵揭,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天谤专,我揣著相機與錄音,去河邊找鬼午绳。 笑死置侍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播蜡坊,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼杠输,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秕衙?” 一聲冷哼從身側響起蠢甲,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灾梦,沒想到半個月后峡钓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡若河,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年能岩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萧福。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡拉鹃,死狀恐怖,靈堂內的尸體忽然破棺而出鲫忍,到底是詐尸還是另有隱情膏燕,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布悟民,位于F島的核電站坝辫,受9級特大地震影響,放射性物質發(fā)生泄漏射亏。R本人自食惡果不足惜近忙,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望智润。 院中可真熱鬧及舍,春花似錦、人聲如沸窟绷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兼蜈。三九已至攘残,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饭尝,已是汗流浹背肯腕。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钥平,地道東北人实撒。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓姊途,卻偏偏與公主長得像,于是被迫代替她去往敵國和親知态。 傳聞我的和親對象是個殘疾皇子捷兰,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內容

  • curl是一個命令行工具,通過指定的URL來上傳或下載數(shù)據(jù)负敏,并將數(shù)據(jù)展示出來贡茅。curl中的c表示client,而U...
    起名難倒英雄漢閱讀 196,917評論 6 64
  • CURL? 嗯其做,說來話長了~~~~ 這東西現(xiàn)在已經是蘋果機上內置的命令行工具之一了顶考,可見其魅力之一斑 1) 二話不...
    bingo居然被占了閱讀 781評論 0 7
  • Curl是Linux下一個很強大的http命令行工具,其功能十分強大妖泄。 二話不說驹沿,先從這里開始吧! 回車之后蹈胡,ww...
    gzwawj閱讀 1,518評論 0 1
  • 1. 獲取網(wǎng)頁 2. 顯示Http Header 結果: 也可以同時顯示 HTTP 頭和文件內容渊季,使用 -i 選...
    清晨的小白閱讀 1,006評論 0 0
  • 一、什么是CURL罚渐? cURL 是一個利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具却汉,支持很多協(xié)議,如HTTP荷并、FTP合砂、...
    伊Summer閱讀 1,253評論 0 4