libcurl - HTTP usage
libcurl 是處理收送網路 request、response 的 library,可用來收送 HTTP 的 request 及 response。
libcurl 收到 response 時會 call callback function,由 callback function 處理收到的資料。callback function 可自行撰寫,其 prototype 如下:
1 | size_t func(void *ptr, size_t size, size_t nmemb, void *userdata) |
- ptr 指向收到的資料
- nmemb 為收到資料的大小
- userdata 可自己定義,我拿它當 return value。
libcurl 的 callback function 分成處理 header 跟 data,用 curl_easy_setopt() 指定處理的 callback function。如果沒有指定 callback function,預設上 data 會被印出來,header 則不處理。
Usage
1. Initialize
1 |
|
2. Set HTTP header data
設 HTTP header,如指定 Content-type:
1 | struct curl_slist* headers; |
call curl_slist_append() 會不斷加資訊到 headers 這個資料結構中。
3. Set options
1 | curl_easy_setopt(curl, CURLOPT_POST, 1); // 以 POST 傳送資料 |
4. 傳送 request
1 | curl_easy_perform(curl); |
以 blocking 的方式傳送 request。
5. clean up
1 | curl_slist_free_all(headers); // 清掉 headers 裡的東西 |