application/x-www-form-urlencoded
最常见的一种 post请求,用 curl发起这种请求也很简单。
curl http://localhost:9090/curl/basic -X POST -d 'hello=world'
multipart/form-data
这种请求一般是文件上传。
curl localhost:9090/curl/upload -F file=@头像.txt
curl localhost:9090/curl/upload -F file=@C:\Users\admin\Desktop\头像.txt
application/json
json格式的post请求,这种请求也很常见。
只适合Linux下使用curl
curl http://localhost:9090/curl/json -X POST -d '{"userName": "lisi", "phoneNumber":"11070704545" }' --header "Content-Type: application/json"
# --header 可以省略成-H
curl http://localhost:9090/curl/json -X POST -d '{"userName":"lisi", "phoneNumber":"11070704545" }' -H "Content-Type: application/json"
跟 application/x-www-form-urlencoded 类型的 POST 请求类似,-d 参数值是 JSON 字符串,并且多了一个 Content-Type: application/json 指定发送内容的格式。
windows目录下使用curl参考以下文档
文件内容作为要提交的数据
如果要提交的数据是在文件里,通过 -d @filename 的方式来提交数据。这是 -d 参数的一种使用方式。
实际上就是把 -d 参数值写在命令行里,变成了写在文件里,@ 符号表明后面跟的是文件名,要读取这个文件的内容作为 -d 的参数。
注意:和 multipart/form-data 中上传文件不是一回事。
有一个 JSON 文件 data.json 内容如下:
{
"userName": "lisi",
"phoneNumber": "11070704545",
"strArray": ["ooo", "mmm"]
}
就可以通过以下示例来提交数据。
curl localhost:9090/curl/json -X POST -d @data.json --header "Content-Type: application/json"
curl localhost:9090/curl/json -X POST -d @C:\Users\admin\Desktop\data.json --header "Content-Type: application/json"
curl localhost:9090/curl/json -X POST -d @data.json -H "Content-Type: application/json"
等同于:
curl localhost:9090/curl/json -X POST -d '{"userName":"lisi","phoneNumber":"11070704545", "strArray": ["ooo", "mmm"]}' --header "Content-Type: application/json"
curl localhost:9090/curl/json -X POST -d '{"userName":"lisi","phoneNumber":"11070704545", "strArray": ["ooo", "mmm"]}' -H "Content-Type: application/json"
application/x-www-form-urlencoded 方式提交文件内容
有一个文件 data.txt 内容如下:
userName=lisi&phoneNumber=11070704545&strArray[]=ooo&arry[]=mmm
就可以通过以下示例来提交数据。
curl localhost:3000/api/basic -X POST -d @data.txt
等同于:
curl localhost:3000/api/basic -X POST -d 'userName=lisi&phoneNumber=11070704545&strArray[]=ooo&arry[]=mmm'
设置header
curl localhost:3000/api/basic \
-H "Content-Type: application/json" \
-H "userId: 454" \
-H "token: af0d8773933eaeffc81d97924bd2a8fc \
......
保存响应结果到文件
curl http://hostname:ip/get/path -H "Content-Type:application/json" > /save/to/path/filename.json
命令行参数
-A
-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]。
将User-Agent改成 Chrome 浏览器
curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com
移除User-Agent标头。
curl -A '' https://google.com
通过-H参数直接指定标头,更改User-Agent。
curl -H 'User-Agent: php/1.0' https://google.com