说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
使用步骤:(easy interface)
①初始化libcurl运行环境:curl_global_init()
【只能调用一次】
②获取句柄:curl_easy_init()
(多线程支持,句柄很重要)【开始一个会话】
③设置传输选项,实现回调函数以完成用户特定任务等:curl_easy_setopt()
④完成传输任务:curl_easy_perform()
⑤释放句柄:curl_easy_cleanup()
【结束一个会话】
⑥清理libcurl环境:curl_global_cleanup()
【只能调用一次】
注:
curl_easy_setopt()
:setopt 即:set option.设置各种curl参数。
示例:下载url中内容,存到save_file文件中
#include <stdio.h>
#include <curl/curl.h>
const char *url = "https://www.baidu.com";
const char *save_file = "save_file.txt";
size_t receive_data(void *buffer, size_t size, size_t nmemb, FILE *file) {
size_t r_size = fwrite(buffer, size, nmemb, file);
return r_size;
}
int main() {
FILE* file = fopen(save_file, "w+"); //打开文件(若无则创建文件)
curl_global_init(CURL_GLOBAL_ALL); //初始化libcurl运行环境
CURL* handle = curl_easy_init(); //获取句柄(开始一个会话)
curl_easy_setopt(handle, CURLOPT_URL, url); //CURLOPT_URL:获取/放置的完整URL
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, receive_data); //CURLOPT_WRITEFUNCTION:用于存储输出数据,参数3为回调函数,回调函数参数以fwrite()语法
curl_easy_setopt(handle, CURLOPT_WRITEDATA, file); //CURLOPT_WRITEDATA:用于回调函数的第四个参数,FILE *file
curl_easy_perform(handle); //执行curl_easy_setopt设置的操作
fclose(file); //关闭文件流
curl_easy_cleanup(handle); //释放句柄(结束一个会话)
curl_global_cleanup(); //清理libcurl环境
return 0;
}
执行步骤:
①将上述代码存入文件:load_file.c文件中。
②输入指令:gcc load_file.c -o load_file -lcurl
编译文件,要链接libcurl库(需安装好库)
③输入指令:./load_file
执行可执行文件
即可得到输出文件。若是想下载图片,则可将url修改为图片地址,将文件改为对应图片后缀名。