这篇文章主要介绍“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 <curl/curl.h>
// 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 <curl/curl.h>
// 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的编译安装和使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/1585028/blog/5021239