libcurl 介绍
curl 使用本文主要介绍 curl 的编程步骤。curl 是利用 URL 语法在命令行方式下工作的开源文件传输工具。curl 编程指南里详细介绍了 curl 的用法。可以下载 curl 使用的 PDF 文档#include "curl/curl.h"#include <fstream>// 写入的回调函数size_t write_data(void *buffer, size_t
·
本文主要介绍 libcurl 的编程步骤。
curl 是利用 URL 语法在命令行方式下工作的开源文件传输工具。
可以在官方下载地址去下载curl
libcurl 编程指南 里详细介绍了 libcurl 的用法。
libcurl 的文档非常丰富,而且有很多 libcurl 使用的例子 可供参考。
另外,可以下载 everything-curl,这是一个 curl 详尽的使用文档。
#include "curl/curl.h"
#include <fstream>
// 写入的回调函数
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
reinterpret_cast<std::ofstream*>(userp)->write(reinterpret_cast<char*>(buffer), size * nmemb);
return size * nmemb;
}
int main(void)
{
// 调用任何 curl 函数之前,必须先调用 curl_global_init 初始化 curl 库,
// 详情参见 curl_global_init 注释
// 一般情况下使用参数 CURL_GLOBAL_ALL 初始化所有可用的模块
if (curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK)
{
return -1;
}
// 为了使用 easy interface,必须首先创建一个 easy handle。
CURL* easyHandle = curl_easy_init();
if (NULL == easyHandle)
{
return -1;
}
// 通过调用 curl_easy_setopt 设置可选项
// 设置网址
const char* url = "https://www.gitbook.com/download/pdf/book/bagder/everything-curl";
curl_easy_setopt(easyHandle, CURLOPT_URL, url);
// 设置回调函数
curl_easy_setopt(easyHandle, CURLOPT_WRITEFUNCTION, write_data);
// 设置回调参数,在回调函数调用时,该参数作为回调函数的第四个参数原封不动的传给回调函数
const char* savePath = "D:\\test.pdf";
std::ofstream fout(savePath, std::ofstream::app | std::ofstream::out | std::ofstream::binary);
if (!fout)
{
return 0;
}
curl_easy_setopt(easyHandle, CURLOPT_WRITEDATA, &fout);
// 执行请求
CURLcode ret = curl_easy_perform(easyHandle);
if (ret != CURLE_OK)
{
fout.close();
return -1;
}
fout.close();
return 0;
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)