0%

cURL用法

背景

在 *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

参考&鸣谢