# curl命令

# 基础

  1. 在curl中,命令行解析器总是解析整个命令行,因此,选项可以放在整个命令行的任何位置。
  2. 短形式不同的是,长形式的选项使用两个中划线(--)指定,然后紧跟着具体的选项。
  3. 在使用长形式的时候,后面只能跟一个选项。
curl https://api-qa.xiaobangtouzi.com/user-center/credit/transactions\?pageNum\=4\&pageSize\=10\&creditTypeCode\=fq_credit -H "X-Request-Token: dd6726d736413256c04152562748f655"

# 开始

// -v是verbose模式的简写
$ curl -v www.baidu.com // 短形式
$ curl --verbose www.baidu.com // 长形式

// 复合形式
$ curl www.baidu.com -vL
$ curl --verbose --location www.baidu.com
// 或
$ curl --location www.baidu.com --verbose

// no- 前缀来指定关闭相应的特征
$ curl --no-verbose http://example.com

// 使用get方式
$ curl -G -d "name=value&name2=value2" http://www.baidu.com

// 使用post方式
$ curl -d "name=value&name2=value2" http://www.baidu.com #post数据
$ curl -d '{"is_real":1,"end_time":0,}' https://www.fuyin.con #post数据
$ curl -d a=b&c=d&txt@/tmp/txt http://www.baidu.com  #post文件

$ curl -d key1=value1&key2=value2 http://example.com
// 我们也可以使用多个-d选项来指定多组数据
$ curl -d key1=value1 -d key2=value2 http://example.com
// 如果数据过多,我们还可以把数据放在一个文件中
$ curl -d @filename http://example.com

# 选项的参数

# 标志位参数--bool类型参数=>告诉curl打开或关闭某些特征

-v--verbose
-L--location

# 普通参数--要传值的参数

$ curl -d arbitrary http://example.com
$ curl --data arbitrary http://example.com

$ curl -A "Are you OK?" http://example.com

$ curl -d '{"name":"fool"}' http://example.com

# 修改配置请求头参数

$ curl -F 'name=Dan' -H 'Content-Type: multipart/magic' https://example.com
$ curl -H "HeaderName: HeaderValue" http://example.com

其中,-H就是用来指定一个具体的Header的选项,值就是key=value 的形式。当需要指定其它的Header,可以使用-H选项。
在curl中,我们可以使用-H--header选项来指定Header。

# 获取请求响应时间

$ curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" GET "http://172.16.248.12:30180/activity/detail?activityId=1975342&operatorIdentificationId=2" -H "accept: */*" -H "X-Request-Token: 03b1b0635cd397955d8a987df86f7bbc"
// 使用下面这个 替换链接即可
$ curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" GET "http://www.baidu.com"

# 如果使用Cookies

我们可以使用--cookie选项来设置一个Cookie:

$ curl --cookie "CookieName=CookieValue" http://example.com

我们可以使用-c选项指定curl保存这次请求中服务器设置的Cookies

$ curl -c cookie.jar.txt http://example.com

有时,我们既需要从文件中读取Cookies,也需要保存服务器设置的Cookies。那么就可以同时使用-b-c选项:

$ curl -b cookies.txt -c cookie.jar.txt http://example.com

# 参考

  1. curl使用指南 (opens new window)