参考 http://man.linuxde.net/curl http://www.cnblogs.com/gbyukg/p/3326825.html

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。

下载

选项-o将下载数据写入到指定名称的文件中,并可以使用–progress显示进度条:

# 将文件下载到本地并命名为mygettext.html
curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
# 将文件保存到本地并命名为gettext.html
curl -O http://www.gnu.org/software/gettext/manual/gettext.html

下载限速

--limit-rate 1000B 可以使用的单位有 G, M, K, B

curl --limit-rate 10K -O https://dldir1.qq.com/qqfile/qq/QQ8.9.4/21603/QQ8.9.4.exe

get/post

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据 可以通过 –data/-d 方式指定使用POST方式传递数据

Get 举例
不带参数 控制台输出请求结果 curl http://www.baidu.com
-i 显示全部信息 curl -i http://www.baidu.com
-l 只显示头部信息
-v 显示get请求全过程解析
Post 举例
curl -d curl -d “param1=value1&param2=value2” “http://www.baidu.com"
json格式的post请求 curl -l -H "Content-type: application/json" -X POST -d '{"carNum":"加油车测试"}' http://192.168.1.143:8080/busi/interface/deliveryOrderList
# GET
## 直接通过get访问接口
curl http://192.168.1.99:8081/webService/app/user
## -u 设置服务器的用户和密码
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX

#POST
## json格式的post
curl -l -H "Content-type: application/json" -X POST -d '{"carNum":"10010"}'  http://192.168.1.143:8080/busi/interface/deliveryOrderList
curl -u username --data "param1=value1&param2=value" https://api.github.com

注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

curl -d "value%201" http://hostname.com

在新版本的CURL中,提供了新的选项 –data-urlencode,通过该选项提供的参数会自动转义特殊字符。

curl --data-urlencode "value 1" http://hostname.com

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如

curl -I -X DELETE https://api.github.cim
#上传文件
curl --form "fileupload=@filename.txt" http://hostname/resource