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 ...
随机推荐
- php中date('Y/m/d',time())显示不对
一. 时间不对是因为没设置时区 在xampp/php/php.ini中ctrl + f 查找date.timezone 该行默认注释,去掉 ; 修改为 date.timezone = PRC 二 上述 ...
- 【转载】redis.windows.conf 参数说明
1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/ru ...
- 4. Linux 集群安装
1. 配置yum yum clean all yum makecache yum install wget 2.安装JDK (1) 将jdk-7u60-linux-i586.rpm通过WinSCP上传 ...
- ES6 新特性(笔记)
1.定义变量 let a).块作用域 , 不同于var的函数作用域 b).不可以重复定义同一个变量名 注: {} ...
- vue学习(八)nextTick[异步更新队列]的使用和应用
nextTick的使用 为了数据变化之后等待vue完成更新DOM,可以在数据变化之后立即使用Vue.nextTick()在当前的回调函数中能获取最新的DOM <div id="app& ...
- 我学到的treap
到目前为止,平衡树应该是我学过的数据结构里面最难的一个了.(顺便贴上一个我认为treap讲解的比较好的博客https://blog.csdn.net/u014634338/article/detail ...
- 在Mac上如何运行jar文件
操作一:编译,打包. 操作二: 运行jar文件,提示:jar中没有主清单属性. 解决办法: 使用解压工具解压HelloWorld.jar文件,往MANIFEST.MF中添加Main-Class. 1. ...
- VUE随手记坑
1.el-select 默认选中的问题 <el-select v-model="temp.audit" placeholder="请选择"> < ...
- UVA - 11105 Semi-prime H-numbers(H-半素数)
题意:所有形如4n+1(n为非负整数)的数叫H数.定义1是唯一的单位H数,H素数是指本身不是1,且不能写成两个不是1的H数的乘积.H-半素数是指能写成两个H素数的乘积的H数(这两个数可以相同也可以不同 ...
- jQuery实现点击div外的区域,来隐藏指定节点
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...