1. 参考
curl官网
2. curl介绍
curl是用C语言写的,提供使用URL进行文件传输的功能。目前已经支持非常多的流行的互联网协议,如:FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS 和 FILE等。curl支持SSL认证,HTTP POST/PUT,FTP上传,HTTP上传、代理、cookies、用户+密码认证、文件续传、代理管道等一系列强大的功能。
相比于Boost asio网络库,具有如下的优点
1)超时时间可以设置
2)HTTP的摘要认证已经实现
3)HTTPS支持的很好
4)HTTP交互实现的非常好
3. 编译静态库
下载了curl-7.61.0源码压缩包,解压之后,进入projects\Windows有VS各个版本的解决方案,目前使用的是VS2015,进入VC14文件夹,里面有lib文件夹,该文件夹里面包含了一个libcurl的解决方案和一个libcurl现有项目(该项目将会加入到实际的解决方案中)。src文件夹包含了一系列工具生成方案。 默认情况下,会编译所有支持的协议进静态库。通过宏定义HTTP_ONLY,仅将HTTP,HTTPS编译到静态库中4.HTTPS支持
curl-7.32.0(2013-08-12 00:17)版本不支持HTTPS,因此需要升级到curl-7.61.0(2018-07-11 08:01)版本。目前在进行HTTPS开发的时候,遇到curl_easy_perform函数执行之后,返回CURLE_UNSUPPORTED_PROTOCOL错误,使用的SSL代码协议是curl_easy_setopt(hnd, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);小知识
curl 命令行依赖 openssl 库才能使用 ssl 和 TLS。当前一般认为 TLSv1.1 及 TLSv1.2 才是安全的,很多 https 服务器仅支持这2个协议,不再支持 TLSv1.0 及 ssl。但是 openssl 是从 1.0.1 才支持 TLSv1.1 及 TLSv1.2。当在代码中只是出现如下的SSL定义的宏
enum {
CURL_SSLVERSION_DEFAULT, CURL_SSLVERSION_TLSv1, CURL_SSLVERSION_SSLv2, CURL_SSLVERSION_SSLv3,CURL_SSLVERSION_LAST /* never use, keep last */
};说明该版本不支持HTTPS协议,需要升级curl版本