curl的介绍
cURL是一个利用URL语法在命令行下工作的文件传输工具,它支持文件上传和下载,习惯称cURL为下载工具。
cURL支持很多的通信协议,包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP等。
curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传等。
而且cURL是跨平台的。
常见用法
curl可以用来访问接口获取数据,也可以访问网页获取页面文本文件。
下面的示例是win10操作系统上面操作的。
简单语法 (GET请求):
curl url
GET请求示例
curl http://t.weather.sojson.com/api/weather/city/101010100
下面是访问百度网页的示例
curl https://www.baidu.com
上面示例相当于发出get请求,cURL默认也是get请求。
POST请求
我们可以使用-X选项来设置post请求,注意-XPOST都需要大写。
curl -X -POST url
#也可以使用简写模式
curl -XPOST url
POST请求没有参数的示例:
curl -XPOST http://127.0.0.1:8080/postInfo
POST请求带参数(普通格式的参数)的示例:
curl -XPOST http://127.0.0.1:8080/postInfoParam -d name="hanxu" -d age=22
也有博客说是可以使用 -d’login=emma&password=123’ ,但是我试着都不成功,不知道是怎么回事。
POST请求带参数(json格式的参数)的示例:
curl -XPOST -H "Content-Type:application/json" http://127.0.0.1:8080/postInfoParam -d "{\"name\":\"hanxu\",\"age\":22}"
POST上传文件
-F参数用来向服务器上传二进制文件。
注意文件路径前要加上@符号
curl -XPOST -F "file=@D:/dist/main.js" http://127.0.0.1:8080/upload
PUT&DELETE请求
PUT,DELETE请求和POST请求一样
curl -XPUT url
curl -XDELETE url
PUT请求示例
curl -XPUT http://127.0.0.1:8080/putInfo -d name=hanxu -d age=22
常用选项介绍
-A 可以用来指定用户代理,比如有些接口只能是使用谷歌浏览器,就可以使用这个选项进行指定
$ 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://127.0.0.1:8080/getGoogleInfo
-d 可以用来发送请求参数信息
具体的使用可以参照上面的post请求示例
–data-urlencode 与-d类似,但是通过这个选项发送的参数会进行URL 编码。
-H 可以用来添加头部信息
例如post请求的带有json格式参数的示例使用的就是 -H选项
-I 可以显示服务端返回的头部信息
curl http://127.0.0.1:8080/getInfo -I
-i 与-I类似,不过多显示了接口的返回值
curl http://127.0.0.1:8080/getInfo -i
-O 该选项可以用来下载文件,并将 URL 的最后部分当作文件名,需要注意的是文件会直接下载到当前目录中,所以在下载前需要跳转到事先准备好的目录中。虽然可以下载文件,但是下载文件的没有自动名字。
curl -O http://127.0.0.1:8080/download
-o与-O一样都是可以用来下载文件,但是-o可以自定义文件名称
curl -o "test.js" http://127.0.0.1:8080/download
-L 用来设置cURL跟随重定向。cURL 默认是不会跟随重定向的,所以需要设置-L选项
curl http://127.0.0.1:8080/redirectBaidu
curl -L http://127.0.0.1:8080/redirectBaidu
-v 可以显示底层的信息,例如握手信息、请求和响应的头信息等。
curl -v http://127.0.0.1:8080/redirectBaidu
-u 可以用来设置服务器认证的用户名和密码。
curl -u "用户名:密码' url
curl -u 'admin:admin' https://127.0.0.1/login