摘要
curl使用url上传和下载的客户端程序,c表示客户端的含义。
正文
curl 使用 url 上传和下载的客户端程序,c 表示客户端的含义。
url 参数,可以不加双引号。
但是如果碰到如 & 符号,就会自动截断,所以保险起见,加双引号。
一、快速使用
1.1 get
发送一个 get 请求
1
2
3
| curl -X GET \
"https://meethigher.top/census/thread" \
-H "accept: */*"
|
1.2 post
发送一个 post 请求,请求体格式是 json,具体请求体内容是分页。
1
2
3
4
5
| curl -X POST \
"http://127.0.0.1:9090/doc/docPageQuery" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-d "{\"pageIndex\": 1, \"pageSize\": 20}"
|
二、细节
以下所有内容,通过 curl --help 都可以查看
curl 支持简略写法,如 curl -v
curl 也支持全拼写法,如 curl --verbose
多参数可以使用简略写法,如 curl -vL
2.1 跟随重定向
访问我的 http 域名,会自动重定向到 https 域名。
curl 默认是获取到的重定向前的内容,如果想要直接获取重定向后的内容,需要使用 location
1
| curl -L "http://meethigher.top"
|
或者全拼写法
1
| curl --location "http://meethigher.top"
|
2.2 显示通信过程
verbose 显示完整的请求过程
1
| curl -v "http://meethigher.top"
|
或者全拼写法
1
| curl --verbose "http://meethigher.top"
|
2.4 设置请求头
header 表示设置请求头
1
| curl -H "User-Agent: I am your father" "https://meethigher.top/census/head"
|
或者全拼写法
1
| curl --header "User-Agent: I am your father" "https://meethigher.top/census/head"
|
如图,查看 ua 已经被修改
curl 还提供了比 header 更精准的参数,基于 header 实现的,所以只要了解 header 即可。
2.5 切换请求方式
request 表示设置请求方式
1
| curl -X POST "http://127.0.0.1:9090/doc/downExcel"
|
或者全拼写法
1
| curl --request POST "http://127.0.0.1:9090/doc/downExcel"
|
2.6 设置请求体
任意格式
data 表示设置请求体
1
2
3
4
| curl -X POST \
-H "Content-Type:application/json" \
-d "{\"companyName\": \"\", \"pageIndex\": 1, \"pageSize\": 20}" \
"http://192.168.110.61:8030/ecity/admin/bikeAuth/pageQuery"
|
或者全拼写法
1
2
3
4
| curl -X POST \
-H "Content-Type:application/json" \
--data "{\"companyName\": \"\", \"pageIndex\": 1, \"pageSize\": 20}" \
"http://192.168.110.61:8030/ecity/admin/bikeAuth/pageQuery"
|
不管是 json、form 表单、拼参形式,都可以通过 data,但是要注意请求头的 Content-Type 要配套
如果 -d 后面涉及编码问题时,比如 xml,可以直接使用 -d @文件 ,如
1
| curl -X POST -H "Content-Type:application/xml" -d @test.txt "http://192.168.110.199:9999/xml/insert"
|
1
| curl -X POST -F "pageIndex=1" -F "pageSize=20" -F "taskName= 测试任务" "http://127.0.0.1:54187/task/pageQuery"
|
若需要上传文件
1
2
3
| curl -X POST -F file=@doc.xlsx "http://127.0.0.1:9090/doc/excelImport"
# 批量上传
curl -X POST -F "file=@1.txt" -F file=@2.txt -F file=@3.txt -F file=@4.txt "http://192.168.110.199:8090/upload"
|
2.7 下载功能
output 表示将控制台打印改为保存
1
| curl -X GET -o doc.xlsx "http://192.168.101.11:9090/doc/downExcel"
|
或者全拼写法
1
| curl -X GET --output doc.xlsx "http://192.168.101.11:9090/doc/downExcel"
|
2.8 上传功能
Multipart formposts - Everything curl
Uploads - Everything curl
下面举例 multipart/form-data 的上传形式
form 表示采用 form 表单形式
1
2
3
| curl -X POST -F file=@doc.xlsx "http://127.0.0.1:9090/doc/excelImport"
# 批量上传
curl -X POST -F file=@1.txt -F file=@2.txt -F file=@3.txt -F file=@4.txt "http://192.168.110.199:8090/upload"
|
或者全拼写法
1
| curl -X POST --form file=@doc.xlsx "http://127.0.0.1:9090/doc/excelImport"
|
2.9 配置代理
临时全局代理
该代理的开启,按照我的习惯,依然是使用 Qv2ray,参考 Git 配置代理
1.) windows
1
2
| set http_proxy=10.0.0.1:1081
set https_proxy=10.0.0.1:1081
|
2.) linux
1
2
| export http_proxy=10.0.0.1:1081
export https_proxy=10.0.0.1:1081
|
临时请求代理
只需要添加请求头 -x 即可
1
| curl -x 10.0.0.1:1081 -o jvms.zip "https://github.com/ystyle/jvms/releases/download/v2.1.1/jvms_v2.1.1_amd64.zip"
|
2.10 HTTP2请求
需要 curl 支持 http2
1
| curl -I --http2 https://meethigher.top
|
三、参考致谢
Command line options - Everything curl
curl 网站开发指南 - 阮一峰的网络日志
curl 的用法指南 - 阮一峰的网络日志