概述
可以这么理解curl命令,curl帮忙构建http请求和接受http响应,所以需要了解http报文格式,以及每个结构使用什么参数进行指定
http报文
请求报文
- 请求行
- 方法
- -X 指定方法,可选择GET、POST、HEAD、PUT
- -I 发起HEAD请求,并打印报文头
- url 作为curl url的参数
- -G 指定查询字符串
- -G -d 'key=value&key=value...' 合并格式
- -G -d 'key=value' -d 'key=value' 拆分格式
- --data--urlencode 用于url编码
- -G 指定查询字符串
- 版本
- 方法
- 报文头
- -H 指定报文头
- -H 'Content-Type: text/plain' 指定类型
- Content-Type: text/xml xml格式
- Content-Type: text/plain文本
- Content-Type: application/json json格式
- application/x-www-form-urlencoded 默认格式
- -H 'Content-Type: text/plain' 指定类型
- 特殊报文头
- -e 指定Referer 表示请求来源
- -A User-Agent
- 默认为curl/[version]
- -b 指定cookie报文头
- -b 'foo1=bar1;foo2=bar2'
- -b cookies.txt 读取本地文件
- ps:可以和后续的-c cookies.txt配合使用
- -H 指定报文头
- 报文体
-d 指定报文体,并且如果没有-G,则默认方法为POST,可以不用指定-X POST
- 从文件中读取
- -d '@file'
- 参数格式
- 文本格式
- -d 'key=value&key=value...' 合并格式
- -d 'key=value' -d 'key=value' 拆分格式
- --data--urlencode 用于url编码
- json格式
- '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json'
- xml格式
- -d '<user><login>ann</login><password>123</password></user>' -H 'Content-Type: text/xml'
- 文本格式
- 从文件中读取
响应报文
- 状态行
- 版本
- 状态码
- -i 打印报文头
- 原因短语
- 报文头
- -c 下载cookies到本地文件
- 响应报文体
- -o 指定文件保存
- -O 以url的最后部分当做文件名
其他
文件上传
-F 支持二进制文件上传
- -F 'file=@filename;type=image/png;filename=xx'
- file指定本地上传的文件
- type指定MIME
- filename指定上传的文件名
重定向支持
-L 支持自动重定向,默认对于3xx是不重定向的
ssl
- -k 跳过ssl检测
--limit-rate 限流测试
--limit-rate 200k
-s
跳过进度信息和错误信息
-S
只输出错误信息
-x
指定代理
来源:oschina
链接:https://my.oschina.net/hehuang139/blog/4270523