扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要介绍“libcurl的编译安装和使用方法”,在日常操作中,相信很多人在libcurl的编译安装和使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”libcurl的编译安装和使用方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
站在用户的角度思考问题,与客户深入沟通,找到柯城网站设计与柯城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、雅安服务器托管、企业邮箱。业务覆盖柯城地区。
下载libcurl:
https://github.com/curl/curl
libcurl官方指导:
https://curl.se/
编译libcurl:
编译步骤: wanglc@wanglc-VirtualBox:~/Downloads$ unzip curl-master.zip wanglc@wanglc-VirtualBox:~/Downloads$ cd curl-master/ wanglc@wanglc-VirtualBox:~/Downloads$ ./buildconf wanglc@wanglc-VirtualBox:~/Downloads$ ./configure wanglc@wanglc-VirtualBox:~/Downloads$ ./make wanglc@wanglc-VirtualBox:~/Downloads$ sudo make install (默认安装到/usr/local目录下) 编译之后的头文件: wanglc@wanglc-VirtualBox:~/Downloads/curl-master/include/curl$ pwd /home/wanglc/Downloads/curl-master/include/curl wanglc@wanglc-VirtualBox:~/Downloads/curl-master/include/curl$ ls curl.h curlver.h easy.h Makefile Makefile.am Makefile.in mprintf.h multi.h options.h stdcheaders.h system.h typecheck-gcc.h urlapi.h wanglc@wanglc-VirtualBox:~/Downloads/curl-master/include/curl$ 编译之后的库文件: wanglc@wanglc-VirtualBox:~/Downloads/curl-master/lib/.libs$ ls -l libcurl.so* lrwxrwxrwx 1 wanglc wanglc 16 4月 15 22:19 libcurl.so -> libcurl.so.4.7.0 lrwxrwxrwx 1 wanglc wanglc 16 4月 15 22:19 libcurl.so.4 -> libcurl.so.4.7.0 -rwxrwxr-x 1 wanglc wanglc 499648 4月 15 22:19 libcurl.so.4.7.0 wanglc@wanglc-VirtualBox:~/Downloads/curl-master/lib/.libs$ 安装后的头文件: wanglc@wanglc-VirtualBox:/usr/local/include/curl$ ls curl.h curlver.h easy.h mprintf.h multi.h options.h stdcheaders.h system.h typecheck-gcc.h urlapi.h wanglc@wanglc-VirtualBox:/usr/local/include/curl$ pwd /usr/local/include/curl wanglc@wanglc-VirtualBox:/usr/local/include/curl$ cd .. 安装的库文件: wanglc@wanglc-VirtualBox:/usr/local/lib$ ls cmake libcurl.la libcurl.so.4 libjsoncpp.a libjsoncpp.so.1.9.4 libprotobuf.la libprotobuf-lite.so libprotobuf-lite.so.26.0.0 libprotobuf.so.26 objects-Release python3.8 libcurl.a libcurl.so libcurl.so.4.7.0 libjsoncpp.so libjsoncpp.so.24 libprotobuf-lite.la libprotobuf-lite.so.26 libprotobuf.so libprotobuf.so.26.0.0 pkgconfig wanglc@wanglc-VirtualBox:/usr/local/lib$ ls -l libcurl.so* lrwxrwxrwx 1 root root 16 4月 15 22:25 libcurl.so -> libcurl.so.4.7.0 lrwxrwxrwx 1 root root 16 4月 15 22:25 libcurl.so.4 -> libcurl.so.4.7.0 -rwxr-xr-x 1 root root 499648 4月 15 22:25 libcurl.so.4.7.0 wanglc@wanglc-VirtualBox:/usr/local/lib$ pwd /usr/local/lib wanglc@wanglc-VirtualBox:/usr/local/lib$
libcurl http get编程:
#include// size_t write_callback(char* ptr, size_t size, size_t nmemb, void *userdata) // FILE* fp; 1. 创建CURL变量 CURL* curl = nullptr; 2. 初始化CURL变量 curl = curl_easy_init(); if (curl == nullptr) { return; } 3. 设置CURL选项 curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); // 默认为get请求,get请求的参数是表单参数,直接写在网址后面即可。 // 设置处理响应数据的回调 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // fp作为write_callback的userdata参数传入。 4. 执行CURL请求(默认是同步执行) CURLcode res; res = curl_easy_perfom(curl); if (res != CURLE_OK) { curl_easy_strerror(res); // 返回错误描述字符串,可打印 curl_easy_cleanup(curl); return; } 5. 清理CURL变量 curl_easy_cleanup(curl);
libcurl http post编程:
#include// size_t write_callback(char* ptr, size_t size, size_t nmemb, void *userdata) // FILE* fp; 1. 创建CURL变量 CURL* curl = nullptr; 2. 初始化CURL变量 curl = curl_easy_init(); if (curl == nullptr) { return; } 3. 设置CURL选项 curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); // 默认为get请求 curl_easy_setopt(curl, CURLOPT_POST, 1); // 开启post请求 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, /*POSTFIELDS字符串的长度*/); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl"); // 字符串,post表单数据 // 设置处理响应数据的回调 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // fp作为write_callback的userdata参数传入。 4. 执行CURL请求(默认是同步执行) CURLcode res; res = curl_easy_perfom(curl); if (res != CURLE_OK) { curl_easy_strerror(res); // 返回错误描述字符串,可打印 curl_easy_cleanup(curl); return; } 5. 清理CURL变量 curl_easy_cleanup(curl);
libcurl实现下载文件(get):
参考 https://curl.se/libcurl/c/http2-download.html
#
libcurl实现上传文件(post):
参考 https://curl.se/libcurl/c/http2-upload.html
#
全局初始化和全局清理:
curl_global_init(CURL_GLOBAL_ALL)和curl_global_cleanup()
SSL相关的选项:
CURLOPT_SSL_VERIFYPEER
CURLOPT_SSL_VERIFYHOST
CURLOPT_CAPATH
cookie和session:
CURLOPT_COOKIEJAR 保存cookie信息到本地cookie文件。
CURLOPT_COOKIEFILE 读取本地cookie文件的信息。
添加http header:
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, “Accept: Agent-007″);
CURLOPT_HTTPHEADER 将headers中的header参数追加到curl。
CURLOPT_HEADER 非0表示添加header参数。
curl_slist_free_all 释放headers关联的内存。
其他选项
CURLOPT_POST
CURLOPT_VERBOSE
CURLOPT_FOLLOWLOCATION
CURLOPT_CUSTOMREQUEST
到此,关于“libcurl的编译安装和使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流