• 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. NirSoft 实用程序

    64-bit (x64) utilities package 此软件包包含NirSoft中的所有实用程序,这些实用程序具有64位版本(x64)Windows的独立构建. 此程序包包含下面列表中每个实用 ...

  2. Day 23:JAVA SE复习

    作业 1.多线程下载图片 import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream ...

  3. LeetCode141 环形链表(Java—HashSet简单应用or双指针)

    题目: 判断给出的链表中是否存在环. 思路: 1. 遍历整个链表,将走过的节点的内存地址保存下来,如果再次走到同样的内存地址,说明链表中有环.时间复杂度为O(n). 2. 设置两个指针,fast指针每 ...

  4. Mac安装软件提示破损

    安装提示破损 zhong终端输入 sudo spctl --master-disable 就可以顺利打开啦

  5. 138-PHP static后期静态绑定(一)

    <?php class test{ //创建test类 public function __construct(){ self::getinfo(); //后期静态绑定 } public sta ...

  6. 《新标准C++程序设计》3.9-3.10(C++学习笔记11)

    一.C++程序到C程序的翻译 程序示例分析: C++: class CCar { public: int price; void SetPrice (int p); }; void CCar::Set ...

  7. 吴裕雄--天生自然C++语言学习笔记:C++ 数据封装

    所有的 C++ 程序都有以下两个基本要素: 程序语句(代码):这是程序中执行动作的部分,它们被称为函数. 程序数据:数据是程序的信息,会受到程序函数的影响. 封装是面向对象编程中的把数据和操作数据的函 ...

  8. 图解HTTP阅读笔记2

    TCP协议:三次握手,C端——>SYN——>S端: S端——>SYN/ACK——>C端: C端——>ACK——>S端. 特点:字节流服务,把大块数据分割成以报文段为 ...

  9. Node.js的启动和调试方式

    通过node命令启动 node server/bin/www webstorm配置启动入口 pm2 全局安装:cnpm i pm2 -g 检查版本:pm2 -v 启动:cd 项目目录 pm2 star ...

  10. Kali链接Xshell和更新源

    一.Xshell首次链接kali系统中的ssh Xshell:帮助我们去连接各种服务平台,方便管理服务器,链路可以加密处理(ssh/vsftp) 1.开启kali中的ssh服务,service ssh ...