這篇文章主要介紹“l(fā)ibcurl的編譯安裝和使用方法”,在日常操作中,相信很多人在libcurl的編譯安裝和使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”libcurl的編譯安裝和使用方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
站在用戶的角度思考問題,與客戶深入溝通,找到柯城網(wǎng)站設(shè)計(jì)與柯城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋柯城地區(qū)。
下載libcurl:
https://github.com/curl/curl
libcurl官方指導(dǎo):
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 (默認(rèn)安裝到/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. 創(chuàng)建CURL變量 CURL* curl = nullptr; 2. 初始化CURL變量 curl = curl_easy_init(); if (curl == nullptr) { return; } 3. 設(shè)置CURL選項(xiàng) curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); // 默認(rèn)為get請(qǐng)求,get請(qǐng)求的參數(shù)是表單參數(shù),直接寫在網(wǎng)址后面即可。 // 設(shè)置處理響應(yīng)數(shù)據(jù)的回調(diào) curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // fp作為write_callback的userdata參數(shù)傳入。 4. 執(zhí)行CURL請(qǐng)求(默認(rèn)是同步執(zhí)行) CURLcode res; res = curl_easy_perfom(curl); if (res != CURLE_OK) { curl_easy_strerror(res); // 返回錯(cuò)誤描述字符串,可打印 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. 創(chuàng)建CURL變量 CURL* curl = nullptr; 2. 初始化CURL變量 curl = curl_easy_init(); if (curl == nullptr) { return; } 3. 設(shè)置CURL選項(xiàng) curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); // 默認(rèn)為get請(qǐng)求 curl_easy_setopt(curl, CURLOPT_POST, 1); // 開啟post請(qǐng)求 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, /*POSTFIELDS字符串的長度*/); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl"); // 字符串,post表單數(shù)據(jù) // 設(shè)置處理響應(yīng)數(shù)據(jù)的回調(diào) curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // fp作為write_callback的userdata參數(shù)傳入。 4. 執(zhí)行CURL請(qǐng)求(默認(rèn)是同步執(zhí)行) CURLcode res; res = curl_easy_perfom(curl); if (res != CURLE_OK) { curl_easy_strerror(res); // 返回錯(cuò)誤描述字符串,可打印 curl_easy_cleanup(curl); return; } 5. 清理CURL變量 curl_easy_cleanup(curl);
libcurl實(shí)現(xiàn)下載文件(get):
參考 https://curl.se/libcurl/c/http2-download.html
#
libcurl實(shí)現(xiàn)上傳文件(post):
參考 https://curl.se/libcurl/c/http2-upload.html
#
全局初始化和全局清理:
curl_global_init(CURL_GLOBAL_ALL)和curl_global_cleanup()
SSL相關(guān)的選項(xiàng):
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參數(shù)追加到curl。
CURLOPT_HEADER 非0表示添加header參數(shù)。
curl_slist_free_all 釋放headers關(guān)聯(lián)的內(nèi)存。
其他選項(xiàng)
CURLOPT_POST
CURLOPT_VERBOSE
CURLOPT_FOLLOWLOCATION
CURLOPT_CUSTOMREQUEST
到此,關(guān)于“l(fā)ibcurl的編譯安裝和使用方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
網(wǎng)站名稱:libcurl的編譯安裝和使用方法
分享地址:http://chinadenli.net/article30/gpccpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、云服務(wù)器、Google、網(wǎng)站維護(hù)、App設(shè)計(jì)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)