#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <process.h>
#include <string>
#include <curl.h>
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "wldap32.lib" )
#ifdef _DEBUG
#pragma comment(lib,"libcurld.lib")
#else
#pragma comment(lib,"libcurl.lib")
#endif
size_t write_callback(char* ptr, size_t size, size_t nmemb, std::string& userdata);
int main()
{
CURL* curl;
CURLcode CurlCode;
struct curl_slist* headerlist = NULL;
CurlCode = curl_global_init(CURL_GLOBAL_ALL); //这个函数设置libcurl需要的程序环境 这个函数只能用一次。(其实在调用curl_global_cleanup 函数后仍然可再用)
if (CurlCode != CURLE_OK)return 0;
curl = curl_easy_init(); //初始化
if (curl)
{
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/*添加请求头*/
//headerlist = curl_slist_append(headerlist, "Content-Type:application/json");
headerlist = curl_slist_append(headerlist, "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
headerlist = curl_slist_append(headerlist, "Accept-Language:zh-CN,zh;q=0.9");
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt"); //把服务器发过来的cookie保存到cookie.txt
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); //设置HTTP请求头
char url[] = "http://www.baidu.com/";
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); //设置写的回调函数
std::string content;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);//winssl编译时使用windows自带的根证书
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
CurlCode = curl_easy_perform(curl); //执行请求
printf("%s\r\n", content.c_str());
curl_easy_cleanup(curl); //释放资源
curl_slist_free_all(headerlist);
headerlist = NULL;
}
curl_global_cleanup();//在结束libcurl使用的时候,用来对curl_global_init做的工作清理。类似于close的函数
system("pause");
return 0;
}
size_t write_callback(char* ptr, size_t size, size_t nmemb, std::string& userdata)
{
size_t rest = 0;
LONG lsize = size * nmemb;
std::string stemp(ptr, lsize);
userdata += stemp;
return lsize;
}

  下载 libcurl  https://curl.haxx.se/download.html

帮助文档 https://curl.haxx.se/libcurl/c/

参考文章:http://blog.csdn.net/dearwind153/article/details/51914985

参考:https://www.cnblogs.com/hongfei/p/3469982.html
 注意:如果使用静态连接库的话需要设置 预处理器定义 CURL_STATICLIB

 

libcurl库的简单使用的更多相关文章

  1. C++ 用libcurl库进行http通讯网络编程

    使用libcurl完成http通讯,很方便而且是线程安全,转载一篇比较好的入门文章 转载自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724 ...

  2. C++ 用libcurl库进行http通讯网络编程(转)

    转载:http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三. ...

  3. C++ 用libcurl库进行http通讯网络编程[转]

    http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...

  4. C/C++ 用libcurl库进行http通讯网络编程

    C/C++ 用libcurl库进行http通讯网络编程 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_p ...

  5. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

  6. C++ 用libcurl库进行http 网络通讯编程

      一.LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcur ...

  7. HTTP多线程下载+断点续传(libcurl库)

    目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.lib ...

  8. Linux之Libcurl库的介绍与应用20170509

    一.LibCurl简介 LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP等 ...

  9. (转)libcurl库使用方法,好长,好详细。

    一.ibcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP ...

随机推荐

  1. 权重衰减(weight decay)与学习率衰减(learning rate decay)

    本文链接:https://blog.csdn.net/program_developer/article/details/80867468“微信公众号” 1. 权重衰减(weight decay)L2 ...

  2. spring配置文件各个属性详解

    一.引用外部属性文件 <bean id="propertyConfigurer" class="org.springframework.beans.factory. ...

  3. 学习C#泛型

    C#泛型详解 C#菜鸟教程 C#中泛型的使用

  4. 4、安装supervisor

    1.安装 sudo apt-get install supervisor 2.如果报phthond2.7错误,则执行 easy_install supervisor 3.配置文件位置和配置文件例子 配 ...

  5. python selenium 测试配置信息(URL和浏览器)

    config.ini # this is config file, only store browser type and server URL [browserType] #browserName ...

  6. H3C IP 地址格式和表示方法

  7. python-字符编码数据类型转换

    1 - 编码格式转换 1.1 编码格式介绍 字符集 介绍 ASCII ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符 ANSI ANSI是一种字符代码,为使计算 ...

  8. H3C DCC的特点

  9. Python--day67--CBV和FBV、Request对象及上传文件示例

    1,CBV版添加新的出版社 views.py文件 urls.py文件 2,Request对象: request对象 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpReques ...

  10. Python--day47--mysql索引种类