温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

libcurl的编译安装和使用方法

发布时间:2021-07-08 17:38:16 来源:亿速云 阅读:643 作者:chen 栏目:编程语言

这篇文章主要介绍“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的编译安装和使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI