libcurl在windows下的使用
- curl在linux下很好用,但到了windows下写程序却没办法使用了,这时候可以使用libcurl库
- libcurl库的编译网上很多,我就不一一赘述了,curl的官方网站:https://curl.haxx.se/,下载下来根据README编译即可
- 在使用libcurl的程序中,首先需要初始化libcurl的全局环境,意味着无论你要执行多少次的传输,都应该且只初始化一次:
curl_global_init(CURL_GLOBAL_ALL);//该语句是全局初始化,在程序中只需要执行一次,而且初始化与释放配套,即初始化之后环境,在程序结束的时候需要清除该环境
2 curl_global_cleanup();//该函数用来释放掉初始化的全局环境
注意:请避免重复的调用curl_global_init和 curl_global_cleanup,他们每个仅被调用一次。
- 全局初始化函数需要一个参数:
- CURL_GLOBAL_ALL:表示初始化所有已知的内部子模块,一般都是使用这个宏
- CURL_GLOBAL_WIN32:只被应用在windows系统上,初始化win32套接字
- CURL_GLOBAL_SSL:初始化与ssl相关的环境
- CURL_GLOBAL_NOTHING:没有额外的初始化
- 在初始化全局环境之后,就可以使用libcurl了,为了使用libcurl提供的简单借口,需要创建一个简单借口的句柄:
//初始化简单接口的句柄,每一个简单的接口通信都需要一个句柄,也就是说需要为每个准备传输数据的线程都创建一个句柄,句柄不能共享
CURL *curl = curl_easy_init();
//初始化之后需要判空,判断句柄是否初始化成功了
if(curl == NULL){/*打印日志,初始化失败*/}
- 得到句柄curl之后,可以在这个句柄中设置多个选型
//设置curl的信息
函数原型:CURLcode curl_easy_setopt(CURL *curl, CURLoption option, …); //设置防止301,302重定向
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION,); //当需要对响应的数据进行解析的话,就需要一个回调函数取到返回数据
//string 就是要解析的返回数据
string content;
long retcode = ;//http的返回码,判断响应 curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &process_data);
//准备发送request的url
curl_easy_setopt(curl, CURLOPT_URL, "url");
//当发送的url请求是需要验证用户名密码的,也可以将用户名和密码设置到句柄内
curl_easy_setopt(curl, CURLOPT_USERPWD, "username:password"); //都设置完成之后就可以执行了
curl_easy_perform(curl); CURLcode result = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE , &retcode); if ( (result != CURLE_OK) || retcode != ){/*
CURLE_OK 代表 curl的错误代码,ok代表成功 */} //到这里一个完整的libcurl请求就发送出去了,在结束时还需要将句柄删除掉,就是说每一次init都需要一个对应的cleanup
curl_easy_cleanup(curl);
- 获取返回数据的方法代码如下:
static size_t process_data(void *data, size_t size, size_t nmemb, string &content)
{
long sizes = size * nmemb;
string temp;
temp = string((char*)data,sizes);
content += temp;
return sizes; }
libcurl在windows下的使用的更多相关文章
- windows下libcurl与zlib和ssl共同编译
下载了curl 7.37,在project里有各个版本VS对应的项目文件,我们选择合适的打开即可以编译,根据不同的项目配置输出想要的库,比如可以切换多种SSL库,dll/lib,debug/relea ...
- windows 下编译libcurl
因为linux平台采用了libcurl,有一个程序移植到到windows平台,再linux采用libcurl.在windows下准备也采用该库.在网上搜索了几位同行写的,步骤上面有缺失. 本文将以详细 ...
- 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...
- 让 windows 下的命令行程序 cmd.exe 用起来更顺手
在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...
- Windows下Visual studio 2013 编译 Audacity
编译的Audacity版本为2.1.2,由于实在windows下编译,其源代码可以从Github上取得 git clone https://github.com/audacity/audacity. ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- 关于Linux和Windows下部署mysql.data.dll的注册问题
mysql ado.net connector下载地址: http://dev.mysql.com/downloads/connector/net/ 选择版本: Generally Available ...
- windows下配置apache+php环境
PHP安装 由于windows下php扩展5.6的多余7.0,故以php5.6为开发环境.如果对扩展要求不高,可以使用php7,安装过程类似. 约定: 环境安装目录: D:/phpsetup/ |-- ...
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
随机推荐
- Angular2的双向数据绑定
什么是双向绑定 如图: 双向绑定.jpg 双向绑定机制维护了页面(View)与数据(Data)的一致性.如今,MVVM已经是前段流行框架必不可少的一部分. Angular2中的双向绑定 双向绑定, ...
- JAVAWEB limit 分页 (转载)
原文来自于 https://www.jianshu.com/p/553fc76bb8eb 作者写的很不错 只是为了自己方便学习转载的 代码我就不贴了 我是 Oracle 要改一些代码 原 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-chevron-right
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- 基础知识 SafeSEH DEP ASLR SEHOP
大多是0day书上抄的 1.SafeSEH 机制: 首先:内存中有SEH表的备份(加密过的) 在调用异常出来函数前,RtlDispatchException()函数中的行为: Ⅰ.检查异常处理链是否位 ...
- 小米百元NFC智能神器来了:必成爆款!
6月14日,小米手环4全渠道首卖,其中电商平台今日10:00开卖,线下小米之家需要顾客持本人身份证限购一台. 首销结束后,米家官微宣布,小米手环4下一轮开售时间在6月18日上午10:00,届时小米手环 ...
- 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
- CSS - 强制换行和禁止换行强制换行 和禁止换行样
强制换行 word-break: break-all; 只对英文起作用,以字母作为换行依据. word-wrap: break-word; 只对英文起作用,以单词作为换行依据. whi ...
- Percona-Toolkit 之 pt-archiver 删除历史数据
pt-archiver是Percona-Toolkit工具集中的一个组件,是一个主要用于对MySQL表数据进行归档和清除工具.它可以将数据归档到另一张表或者是一个文件中.pt-archiver在清除表 ...
- C语言-整数类型
C语言-整数类型 整数类型 Reg为寄存器 字长,是说这个寄存器是多少宽的,每个寄存器可以表示32bit数据,也是说CPU与RAM每一次传递的数据也是32bit 计算机内部一切都是二进制 所有的类型, ...
- 083-PHP的foreach循环
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } print_r($a ...