一、简介
curl是利用URL语法在命令行方式下工作的开源文件传输工具,支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP,功能强大,用于文件下载和上传,项目需要,学习一下。
二、语法
curl [option] [url]
帮助:curl --help
1.http协议
【Option】可选参数 描述
-X 或者 --request 指定请求方式,如GET 、POST 、PUT 、DELETE 、HEAD 等七种方式
-i 或者 --include 显示服务器response 响应头部信息
-v 或者 --verbose 显示详细(冗长)信息
-H 或者 --header 指定http 请求头 ,如 -H "Content-Type:application/json"
-d 或者 --data 指定请求体body参数 , 如有多个参数可以用&隔开或者使用多个-d 选项。 如 -d "a=abc&b=110&c=true" (指定三个参数)或 -d a=abc -d b=110 -d c=true 亦可。
-F 或者 --form 指定multipart Form 请求体,如文件域参数,或者普通表单域参数。
-u 或者 --user 指定用户名:密码
-C 或者 --continue-at offset 用于断点续传。
-c 或者 -cookie-jar 请求返回,回写cookie到指定文件中
-D 或者 --dump-header 请求返回,回写response header信息到指定文件中
-b 或者 --cookie 请求时携带上cookie,指定本地cookie所在文件
-x 或者 --proxy 指定 http代理服务器ip:port
-O 请求Url并保存到本地
-o 请求Url并保存到指定文件
- 基本用法,get请求:curl {url}
- 显示HTTP响应的头部信息:curl -i {url}
- 查看HTTP请求/响应过程中的所有头部信息:curl -v {url}
- 无参POST请求:curl -X POST {url}
- Form表单(application/x-www-form-urlencoded)POST请求:curl -X POST -d "name=xxx" {url}
- JSON形式POST请求:curl -H "Content-Type:application/json" -X POST -d '{"name": "xxx"}' {url}
- 文件流(multipart/form-data)POST请求:curl -X POST -F "Filedata=@{filePath}" (文件参数) -F "FileName=text.txt" (普通文本参数) {url}
- 请求cookie回写到本地:curl -c cookie.txt {url}
- 请求携带cookie:curl -b cookie.txt {url}
- 下载文件到本地:curl -O {url}
- 下载文件到本地并指定文件名:curl -o {fileName} {url}
2.ftp协议
- 显示FTP文件列表:
curl -u {userName}:{password} ftp://{url} <or> curl ftp://{userName}:{password}@{url} - 不显示进度条
curl -u {userName}:{password} -s ftp://{url} - 下载单个文件
curl -u {userName}:{password} ftp://{ip}:{21}/{srcFilepath} -o {destFilepath} - 上传单个文件
curl -u {userName}:{password} ftp://{ip}:{21}/{destFilepath} -T {srcFilepath} - 删除ftp服务器文件(ftp 删除命令):
curl -u {userName}:{password} ftp://{ip}:{21} -X 'DELE {filePath}' - 连续下载多个文件到本地(不支持递归下载,不指定文件名):
curl -u {userName}:{password} ftp://{ip}:{21}/[1,2,3].txt -O 或者
curl -u {userName}:{password} ftp://{ip}:{21}/[1-3].txt -O
3.响应时长
- curl -o /dev/null -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"\n" {url}
参数说明:
-o:把curl 返回的html、js 写到垃圾回收站[ /dev/null]
-s:去掉所有状态
-w:按照后面的格式写出rt
time_namelookup:DNS 解析域名[www.taobao.com]的时间
time_commect:client和server端建立TCP 连接的时间
time_starttransfer:从client发出请求;到web的server 响应第一个字节的时间
time_total:client发出请求;到web的server发送会所有的相应数据的时间
speed_download:下周速度 单位 byte/s