libcurl库简介
创始人
2025-05-29 02:51:40
0

一、libcurl简介

libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。

libcurl的官网 http://curl.haxx.se/
库下载Release 7.71.1 · curl/curl · GitHub

二、libcurl的使用

调用curl_global_init()初始化libcurl
调用curl_easy_init()函数得到 easy interface型指针
调用curl_easy_setopt()设置传输选项
根据curl_easy_setopt()设置的传输选项,实现回调函数以完成用户特定任务
调用curl_easy_perform()函数完成传输任务
调用curl_easy_cleanup()释放内存

三、libcurl等第三方库的通用编译方法

1.下载libcurl库

库下载:https://github.com/curl/curl/releases/tag/curl-7_71_1

2.下载好拖到ubuntu下解压库文件

tar xvf curl-7.71.1.tar.bz2

3.解压好后,进去生成的文件目录

后续学习需要用到的库开源目录包基本都长这样,我们要看库的使用说明文件README,或者docs目录下的INSTALL,作者会告诉你怎么安装使用库。

4.找到UNIX环境安装说明:

5.把库的包开源包配置安装在指定文件夹

./configure

6.配置完后,make编译:

7.编译完后,make install安装拷贝:

8.可以看到我们刚开始配置的文件夹_install,下载的库就在lib目录里面

xxx.a是静态文件 xxx.so是动态文件

四、调用libcurl编程访问百度主页

1.代码

#include 
#include typedef unsigned int bool;//数据类型别名用typedef  有分号
#define true 1            //宏定义(替换)用define         无冒号
#define false 0bool getUrl(char *filename)//GET请求
{CURL *curl;CURLcode res;FILE *fp;if ((fp = fopen(filename, "w")) == NULL)  // 返回结果用文件存储return false;struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Accept: Agent-007");curl = curl_easy_init();    // 初始化if (curl){//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");// 代理curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);// 改协议头curl_easy_setopt(curl, CURLOPT_URL,"http://www.baidu.com");curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //将返回的http头输出到fp>指向的文件,//即为filename文件,而主函数传入的参数是 /tmp/get.html,即为真正保存在get.html文件中curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp); //将返回的html主体数据输出到fp指向的文件res = curl_easy_perform(curl);   // 执行if (res != 0) {curl_slist_free_all(headers);  //释放句柄curl_easy_cleanup(curl);}fclose(fp);return true;}
}
bool postUrl(char *filename)//POST请求
{CURL *curl;CURLcode res;FILE *fp;if ((fp = fopen(filename, "w")) == NULL)return false;curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/tmp/cookie.txt"); // 指定cookie文件curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "&logintype=uid&u=xieyan&psw=xxx86");    // 指定post内容:用户信息 字段之间&连接,尝试登陆新浪邮箱//curl_easy_setopt(curl, CURLOPT_PROXY, "10.99.60.201:8080");curl_easy_setopt(curl, CURLOPT_URL, " http://mail.sina.com.cn/cgi-bin/login.cgi ");   // 指定urlcurl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);res = curl_easy_perform(curl);//执行curl_easy_cleanup(curl);}fclose(fp);return true;
}
int main(void)
{getUrl("/tmp/get.html");postUrl("/tmp/post.html");
}
#define true 1
#define false 0 //宏定义
typedef unsigned int bool; //定义无符号的整型,把bool转换成int类型,因为c语言不支持bool类型

2、编译注意(编译时链接库、头文件路径,运行需添加动态库为环境变量)

链接库和头文件再编译,同时注意指明他们的路径

gcc test1.c -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl
test1.c 文件名
./curl-7.71.1/_install/include/ 头文件的路径
-./curl-7.71.1/_install/lib/ 库的路径

注意:动态库静态库的链接用-L,而头文件用-I

查看编译结果,在文件目录下多了一个a.out文件

运行a.out时发现报错

解决上述问题的办法:配置下环境变量

export LD_LIBRARY_PATH=./curl-7.71.1/_install/lib

找到刚才程序运行出来的结果

vi /tmp/get.html

相关内容

热门资讯

UART使用 目录 一、uart 二、终端 Terminal 1、终端的分类 2、终端对应的设备节点 三、串口的应...
多种方法跳出线程发包         明文发包CALL是分析一款游戏功能的主要突破口,但是很多游戏都是线程发...
百台房车游甘肃采风活动圆满结束 “不望祁连山顶雪,错将张掖认江南”。张掖,作为汉武帝拓疆河西所设四郡之一,延续了丝路重镇的开放基因与...
宜昌三峡旅行三天两晚人均花多少... 宜昌三峡旅行三天两晚人均花多少钱?看完全知道! 我一直对宜昌三峡的美景心心念念,那壮丽的山水画卷仿佛...
新疆旅游攻略自由行最佳线路,新... 新疆旅游攻略自由行最佳线路,新疆旅游必去十大景点 新疆,这片广袤而神秘的土地,宛如一颗镶嵌在祖国西北...
新疆旅游攻略必去景点,新疆旅行... 新疆旅游攻略必去景点,新疆旅行社排名前十名 新疆,这片广袤而神奇的土地,宛如镶嵌在祖国西北边陲的一颗...
在北京玩五天四晚花费多少钱?5... 在北京玩五天四晚花费多少钱?5日游自驾游攻略 北京,这座拥有三千多年历史的古都,不仅承载着厚重的历史...
基于java中的Springb... 基于java中的Springboot框架实现旧物置换网站平台 开发语言:Java 框...
Linux组的介绍 文章目录一、Linux组基本介绍二、文件/目录所有者查看文件的所有者三、组的创建四、文件目录所在组·...
城事|宝山第一高塔试运营 城事... 近日,宝山长滩观光塔开启试运营。180米高的长滩观光塔作为宝山滨江的制高点,其360度环形观景平台堪...
考研数二第四讲 分段函数的复合... 分段函数的复合函数求分段函数的复合函数,这是考研高数中的一个重要考点。专升本的高数不考...
一站式搞定!进口伏特加酒报关全... 一站式搞定!进口伏特加酒报关全流程服务 伏特加酒(Водка)是俄罗斯的传统酒精饮料;伏特加酒以谷物...
优尼特酒业快闪启幕:酒香漫越山... 当青岛五月的海风轻拂海岸线,一场跨越山海的意式浪漫正悄然绽放。2025年5月28日,意大利酒业巨头优...
手机端(APP点灯blinke... 手机端(APP点灯blinker)-PC端(Node-re...
36页|烘焙品类发展报告202... 2025年1—4月烘焙样本品牌推新节奏逐月加快,总共推出825款新品。高端乳品成品牌创新关键,马斯卡...
原创 不... 中国人常说,“民以食为天”、“吃饭皇帝大”,农业和饮食养活了世界最多的人口。别管在世界上哪个地方,没...
现在的粽子越做越大,适合脾胃功... 明天就将迎来端午节,粽子是节日绕不开的美食。如今,动辄半斤的大粽子越来越流行。佳节到来之际,不少脾胃...
双人去黄山旅游四天路线攻略,黄... 双人去黄山旅游四天路线攻略,黄山4日游跟团纯玩团价格多少 自从和伴侣决定要去黄山旅游后,我们的心情就...
原创 瑞... 今天我要跟你们分享一次超难忘的经历 —— 在瑞士的冰川徒步,那感觉,仿佛一下子闯进了一个超脱尘世的异...
黄山旅游五天四晚费用及行程,黄... 黄山,这座被誉为“天下第一奇山”的名山,以其奇松、怪石、云海、温泉四绝闻名于世。一直以来,它都是我心...