您好,登錄后才能下訂單哦!
這篇文章主要介紹“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的編譯安裝和使用方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。