• 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下的使用的更多相关文章

  1. windows下libcurl与zlib和ssl共同编译

    下载了curl 7.37,在project里有各个版本VS对应的项目文件,我们选择合适的打开即可以编译,根据不同的项目配置输出想要的库,比如可以切换多种SSL库,dll/lib,debug/relea ...

  2. windows 下编译libcurl

    因为linux平台采用了libcurl,有一个程序移植到到windows平台,再linux采用libcurl.在windows下准备也采用该库.在网上搜索了几位同行写的,步骤上面有缺失. 本文将以详细 ...

  3. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  4. 让 windows 下的命令行程序 cmd.exe 用起来更顺手

    在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...

  5. Windows下Visual studio 2013 编译 Audacity

    编译的Audacity版本为2.1.2,由于实在windows下编译,其源代码可以从Github上取得 git clone https://github.com/audacity/audacity. ...

  6. Windows下Nginx配置SSL实现Https访问(包含证书生成)

    Vincent.李   Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...

  7. 关于Linux和Windows下部署mysql.data.dll的注册问题

    mysql ado.net connector下载地址: http://dev.mysql.com/downloads/connector/net/ 选择版本: Generally Available ...

  8. windows下配置apache+php环境

    PHP安装 由于windows下php扩展5.6的多余7.0,故以php5.6为开发环境.如果对扩展要求不高,可以使用php7,安装过程类似. 约定: 环境安装目录: D:/phpsetup/ |-- ...

  9. windows下获取IP地址的两种方法

    windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

随机推荐

  1. 解决使用xampp无法通过ip访问的问题

    本地能通过127.0.0.1或者localhost访问,无法通过外网地址访问: win解决防火墙问题: 1.进入控制面板 -> 系统和安全 -> 2.window防火墙 - 允许其他程序通 ...

  2. 使用 Dashboard【转】

    上一节我们完成了 Kubernetes Dashboard 的安装,本节就来实践一下. Dashboard 界面结构 Dashboard 的界面很简洁,分为三个大的区域. 顶部操作区在这里用户可以搜索 ...

  3. HihoCoder第十周:后序遍历

    也就在大二学数据结构的时候知道了树的前序遍历.后序遍历.中序遍历.之后就忘了,在之后就是大四研究生老师考我,我当时还不知道,真够丢人的.自此之后,知道了如何通过其中两个得到第三个,但是也没有编程实现过 ...

  4. 洛谷 P2426 删数

    题目传送门 解题思路: 区间DP,f[i][j]表示区间i~j可获得的最大值,因为本题的所有区间是可以直接一次性把自己全删掉的,所以所有区间初始化为被一次性删除的值,然后枚举断点,跑区间DP. AC代 ...

  5. jQuery原理系列-常用Dom操作

    1. 事件绑定$(el).bind ie使用attachEvent,其它浏览器使用addEventListener,不同的是ie多了个on前缀,this绑定在window上,需要用call和apply ...

  6. UVALive 4287 SCC-Tarjan 加边变成强连通分量

    还是强连通分量的题目,但是这个题目不同的在于,问你最少要添加多少条有向边,使得整个图变成一个强连通分量 然后结论是,找到那些入度为0的点的数目 和 出度为0的点的数目,取其最大值即可,怎么证明嘛... ...

  7. 吴裕雄--天生自然C++语言学习笔记:C++ 字符串

    C++ 提供了以下两种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持.字符串实际上是使用 null 字符 ...

  8. Node.js NPM 介绍

    章节 Node.js NPM 介绍 Node.js NPM 作用 Node.js NPM 包(Package) Node.js NPM 管理包 Node.js NPM Package.json NPM ...

  9. 查看mysql表空间

    ,),'MB') as data_size, concat(,),'MB') as index_size from information_schema.tables group by TABLE_S ...

  10. UVA - 1645 Count (统计有根树)(dp)

    题意:输入n(n <=1000),统计有多少个n结点的有根树,使得每个深度中所有结点的子结点数相同.输出数目除以109+7的余数. 分析: 1.dp[i],i个结点的有根树个数 2.假设n=7, ...