libcurl中curl_easy_setopt()和curl_easy_perform()函數使用中文詳解


這篇博文介紹的setopt函數不盡詳細,改天有空自己搞個譯文,然后順理成章的摘掉轉的帽子

----------------------------------------------------------------------------------
2012-02-11 21:14
差不多整理了一遍,又補充了一些,最近正在用libcurl,就用到哪補充到哪吧。順道摘了轉的帽子先
-------------------------------------------------------------------------------

libcurl里主要用到的函數有curl_easy_init(),
curl_easy_setopt()和curl_easy_perform().
顧名思義,curl_easy_init()是用來初始化libcurl庫的(不知道對不對,就這么理解吧),
curl_easy_setopt()是用來設置各種curl參數的,setopt就是set option,
curl_easy_perform()是用來執行curl的各種操作的,並且通過分析其返回值,可以判斷curl執行的情況。
1)curl_easy_setopt函數介紹

本節主要介紹curl_easy_setopt中跟http相關的參數。注意本節的闡述都是以libcurl作為主體,其它為客體來闡述的。
1.CURLOPT_URL
設置訪問URL
2.CURLOPT_WRITEFUNCTION,CURLOPT_WRITEDATA
通過設定一個回調函數,執行libcurl在接受到數據后用戶想進行的操作,通常函數多做數據保存的功能,如處理下載文件。CURLOPT_WRITEDATA 用於表明CURLOPT_WRITEFUNCTION函數中的stream指針的來源,說白了就是設定回調函數的第四個參數的數據類型。回調函數原型為:size_t function( void *ptr, size_t size, size_t nmemb, void *stream);
3.CURLOPT_HEADERFUNCTION,CURLOPT_HEADERDATA
通過設定一個回調函數,執行libcurl在接受到http頭數據后用戶想進行的操作。CURLOPT_WRITEDATA 傳遞指針給libcurl,該指針表明CURLOPT_HEADERFUNCTION 函數的stream指針的來源。回調函數原型為 size_t function( void *ptr, size_t size,size_t nmemb, void *stream);
4.CURLOPT_READFUNCTION CURLOPT_READDATA
libCurl需要讀取數據傳遞給遠程主機時將調用CURLOPT_READFUNCTION指定的函數,函數原型是:size_t function(void *ptr, size_t size, size_t nmemb,void *stream). CURLOPT_READDATA 表明CURLOPT_READFUNCTION函數原型中的stream指針來源,說白了就是設定回調函數的第四個參數的數據類型。
5.CURLOPT_NOPROGRESS,CURLOPT_PROGRESSFUNCTION,CURLOPT_PROGRESSDATA
跟數據傳輸進度相關的參數。CURLOPT_PROGRESSFUNCTION 指定的函數正常情況下每秒被libcurl調用一次,為了使CURLOPT_PROGRESSFUNCTION被調 用,CURLOPT_NOPROGRESS必須被設置為false,CURLOPT_PROGRESSDATA指定的參數將作為 CURLOPT_PROGRESSFUNCTION指定函數的第一個參數
6.CURLOPT_TIMEOUT,CURLOPT_CONNECTIONTIMEOUT:
CURLOPT_TIMEOUT 用於設置傳輸時間,CURLOPT_CONNECTIONTIMEOUT 設置連接等待時間
7.CURLOPT_FOLLOWLOCATION
設置重定位URL
CURLOPT_RANGE: CURLOPT_RESUME_FROM:
斷點續傳相關設置。CURLOPT_RANGE 指定char *參數傳遞給libcurl,用於指明http域的RANGE頭域,例如:
表示頭500個字節:bytes=0-499
表示第二個500字節:bytes=500-999
表示最后500個字節:bytes=-500
表示500字節以后的范圍:bytes=500-
第一個和最后一個字節:bytes=0-0,-1
同時指定幾個范圍:bytes=500-600,601-999
    CURLOPT_RESUME_FROM 傳遞一個long參數給libcurl,指定你希望開始傳遞的偏移量。
8.CURLOPT_UPLOAD:
如果第三個參數被設置為1的話,就是讓libcurl做好上傳的准備。如果傳輸協議是http的話,uoload就是發送put。
9. CURLOPT_SSL_VERIFYPEER:
第三個參數的缺省值為1.該函數多用於設定curl忽略對網站證書的檢查(不管忽略不忽略,curl都是檢查的)。
10.CURLOPT_VERBOSE
相當厲害的一個參數,可以向控制台(默認)輸出curl接受和發送的數據,輸出流可以重定向。
11.CURLOPT_HTTPGET
將curl向服務器交互數據的方式改變為get

2)curl_easy_perform 函數說明(error 狀態碼)

該函數完成curl_easy_setopt指定的所有選項,本節重點介紹curl_easy_perform的返回值。返回0意味一切ok,非0代表錯誤發生。主要錯誤碼說明:
1.CURLE_OK
任務完成一切都好
2.CURLE_UNSUPPORTED_PROTOCOL
不支持的協議,由URL的頭部指定
3.CURLE_COULDNT_CONNECT
不能連接到remote 主機或者代理
4.CURLE_REMOTE_ACCESS_DENIED
訪問被拒絕
5.CURLE_HTTP_RETURNED_ERROR
Http返回錯誤
6.CURLE_READ_ERROR
讀本地文件錯誤

3)curl_easy_getinfo函數說明

1.CURLINFO_RESPONSE_CODE
獲得http返回的狀態碼,如400,200


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM