libcurl库的简单使用
#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
libcurl库的简单使用的更多相关文章
- C++ 用libcurl库进行http通讯网络编程
使用libcurl完成http通讯,很方便而且是线程安全,转载一篇比较好的入门文章 转载自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724 ...
- C++ 用libcurl库进行http通讯网络编程(转)
转载:http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三. ...
- C++ 用libcurl库进行http通讯网络编程[转]
http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...
- C/C++ 用libcurl库进行http通讯网络编程
C/C++ 用libcurl库进行http通讯网络编程 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_p ...
- C语言 HTTP上传文件-利用libcurl库上传文件
原文 http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...
- C++ 用libcurl库进行http 网络通讯编程
一.LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcur ...
- HTTP多线程下载+断点续传(libcurl库)
目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.lib ...
- Linux之Libcurl库的介绍与应用20170509
一.LibCurl简介 LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP等 ...
- (转)libcurl库使用方法,好长,好详细。
一.ibcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP ...
随机推荐
- 权重衰减(weight decay)与学习率衰减(learning rate decay)
本文链接:https://blog.csdn.net/program_developer/article/details/80867468“微信公众号” 1. 权重衰减(weight decay)L2 ...
- spring配置文件各个属性详解
一.引用外部属性文件 <bean id="propertyConfigurer" class="org.springframework.beans.factory. ...
- 学习C#泛型
C#泛型详解 C#菜鸟教程 C#中泛型的使用
- 4、安装supervisor
1.安装 sudo apt-get install supervisor 2.如果报phthond2.7错误,则执行 easy_install supervisor 3.配置文件位置和配置文件例子 配 ...
- python selenium 测试配置信息(URL和浏览器)
config.ini # this is config file, only store browser type and server URL [browserType] #browserName ...
- H3C IP 地址格式和表示方法
- python-字符编码数据类型转换
1 - 编码格式转换 1.1 编码格式介绍 字符集 介绍 ASCII ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符 ANSI ANSI是一种字符代码,为使计算 ...
- H3C DCC的特点
- Python--day67--CBV和FBV、Request对象及上传文件示例
1,CBV版添加新的出版社 views.py文件 urls.py文件 2,Request对象: request对象 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpReques ...
- Python--day47--mysql索引种类