1 // curl_test.cpp : 定義控制台應用程序的入口點。 2 // 3 4 #include "stdafx.h" 5 6 #include <iostream> 7 #include <libcurl/include/curl/curl.h> 8 #pragma comment(lib, "d:/libs/libcurl/libcurl.lib") 9 10 using namespace std; 11 12 /** 13 * 一旦curl接收到數據,就會調用此回調函數 14 * buffer:數據緩沖區指針 15 * size:調試階段總是發現為1 16 * nmemb:(memory block)代表此次接受的內存塊的長度 17 * userp:用戶自定義的一個參數 18 */ 19 size_t write_data(void* buffer, size_t size, size_t nmemb, void* userp) 20 { 21 static int current_index = 0; 22 23 cout << "current:" << current_index++; 24 cout << (char*)buffer; 25 cout << "---------------" << endl; 26 27 int temp = *(int*)userp; // 這里獲取用戶自定義參數 28 return nmemb; 29 } 30 31 int _tmain(int argc, _TCHAR* argv[]) 32 { 33 curl_global_init(CURL_GLOBAL_ALL); // 首先全局初始化CURL 34 CURL* curl = curl_easy_init(); // 初始化CURL句柄 35 36 if (NULL == curl) 37 { 38 return 0; 39 } 40 41 int my_param = 1; // 自定義一個用戶參數 42 43 // 設置目標URL 44 curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com"); 45 // 設置接收到HTTP服務器的數據時調用的回調函數 46 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 47 // 設置自定義參數(回調函數的第四個參數) 48 curl_easy_setopt(curl, CURLOPT_WRITEDATA, &my_param); 49 // 執行一次URL請求 50 CURLcode res = curl_easy_perform(curl); 51 // 清理干凈 52 curl_easy_cleanup(curl); 53 54 return 0; 55 }