curl
–(command line url viewer
)是类Unix系统上内置的一个命令行工具,它支持HTTP
和FTP
等常用方式进行网络访问,是一个灰常强大的工具。使用它,可以很好的提升我们开发的效率,比如需要构建一个带有entity
的post
请求。curl
工具使用的是libcurl
库来实现的。
典型案例:
开发中测试环境数据不全,但是客户端提交数据的页面相关代码暂时还没有,我们需要构建一个请求,通过提供的API
来进行数据的插入。此外,curl
还可以很方便的进行网络资源的上传和下载。
上传下载资源
HTTP
curl -o targetfilename http_url
//指定的资源下载到targetfilename
curl -O http_uri
//下载指定的资源到当前目录下
http
上传文件使用--form
参数模拟一次表单提交:
curl --form uploadfile=@/User/who/foo.py http_url //注意,uploadfile是后台能够处理的表单参数
FTP
查看FTP服务器目录结构
curl ftp://ftp.pku.edu.cn //北大的公共FTP服务器,不需要用户名密码 drwxr-xr-x 34 ftp ftp 4096 Jul 03 2013 Linux drwx------ 2 ftp ftp 16384 Jul 16 2012 lost+found drwxr-x--- 2 ftp ftp 4096 Jun 23 2012 mnt drwxr-xr-x 109 ftp ftp 4096 Jun 13 2013 open drwxr-xr-x 3 ftp ftp 4096 Dec 28 2012 pub -rw-r--r-- 1 ftp ftp 51 Jan 10 2012 welcome.msg
下载某个文件到本地
curl -o welcome_down.msg ftp://ftp.pku.edu.cn/welcome.msg
上传某个文件到FTP服务器
curl -T welcome_down.msg ftp://ftp.pku.edu.cn/pub //error 注意,pub并没有开放写权限
创建目录
curl --ftp-create-dirs //如果不存在这个目录,那么创建
编写HTTP请求
上面部分可以为我们上传下载资源提供便利,也可以为我们编写命令行程序时提供了现成的上传下载API
。但通过curl
可以构造出符合要求的HTTP
请求,才真正可以提升开发的效率。
curl
命令行的可选参数很多,这里只介绍几个常用的:
-v //显示一次HTTP连接的整个过程,包括建立端口连接和请求的详细信息
-H //增加Header
-X //指定执行的动作 如POST GET DELETE等
--user-agent //指定请求的user agent
--user name:password //指定HTTP认证的口令
-d //往请求体中增加一些参数
来一个栗子:
现在有一个接口用于给某个商品添加评论,需要参数:
Token:string //用户token,放到header中
goodsId:long //商品Id 放到entity中
comment:string //评论内容 放到entity
接口URL: http://www.example.com/goods/comment/{goodsId}.json
如何通过curl构造这个请求呢?
curl -v -H "Token:mytoken" -d "comment=text&goodsId=22" http://www.example.com/goods/comment/22.json
这样,我们就可以很方便的使用命令行来模拟一些Post
请求,额,一般GET
请求直接走浏览器就OK啦。