C++ libcurl小测试
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 }