背景
在 *nix 环境下,若要对http server提供的RESTful接口进行测试,往往需要安装一些HTTP Client工具,然后在输入URL、参数、Method等,组成HTTP协议后发送测试。这种HTTP Client工具大都以浏览器插件形式提供。今天介绍一些curl使用方法,来替代HTTP Client。此处只是一个应用举例,关于curl更多操作请参考man手册
curl简介
curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。
环境
Mac环境
- OS : os x 10.11.6
- curl : url 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
- openssl : OpenSSL 0.9.8zh 14 Jan 2016
Linux环境
- OS : Red Hat Enterprise Linux Server release 7.2 (Maipo)
- curl : curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.16.2.3 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3
- openssl : OpenSSL 1.0.1e-fips 11 Feb 2013
Usage
HTTP请求命令格式
HTTP命令
** curl {URL}?{参数} -X {Http Method} -H “{Header信息}” -d “{body信息}” -v **
eg:
1 | curl http://127.0.0.1:80/test?param=help -X PUT -H "Connection:keep-alive" -d "Hello world" -v |
HTTPS请求命令格式
导入HTTPS需要的证书
*** 此处以pkcs12证书为例 ***
Mac
双击证书文件,按提示步骤导入证书文件
Linux
Linux下证书存在于/etc/pki/nssdb
中,可使用certutil -d sql:/etc/pki/nssdb -L
命令查询数据库中的证书,使用certutil -d sql:/etc/pki/nssdb -D -n <证书名>
删除证书,使用certuil -d sql:/etc/pki/nssdb -A -t "C,," -n <证书名> -i <cer证书文件路径>
添加cer证书,如果是p12证书其添加方法为p12util -d sql:/etc/pki/nssdb -i <p12证书文件>
。
本文中用到的证书正是p12证书,所以可用p12util去添加证书。
HTTPS命令
Mac
** curl {URL}?{参数} -k –cert {证书.p12}:{证书密码} -X {Http Method} -H “{Header信息}” -d “{body信息}” -v **
eg:
1 | curl https://127.0.0.1:8787/test?param=help -k --cert cert.p12:pasword -X PUT -H "Connection:keep-alive" -d "Hello world" -v |
Linux
** curl {URL}?{参数} -k -X {Http Method} -H “{Header信息}” -d “{body信息}” -v **
eg:
1 | curl https://127.0.0.1:8787/test?param=help -k -X PUT -H "Connection:keep-alive" -d "Hello world" -v |