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 }

 


免責聲明!

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



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