C++ 與 php 的互動 之----- C++ 擷取 網頁文字內容,擷取 php 的 echo 值。

來源:互聯網
上載者:User

標籤:

轉載請聲明出處!

http://www.cnblogs.com/linguanh/category/633252.html

      距離上次 談 C++ 製作json 或者其他資料傳送給 伺服器,時隔兩個多月。

      連結:http://www.cnblogs.com/linguanh/p/4340119.html

 

      這次是從伺服器上 中擷取 文字內容到控制台,或者寫入本地文本等操作,廢話不多說,開講。

      

-----------------------------------------------------------分割線-------------------------------------------------------------

      測試伺服器是: 新浪雲 sea;

      測試內容:擷取 由 php 腳步從伺服器中 讀取出來的 資料,我這裡是 使用者的openID;

      工具:VS 2012;

 

先上直觀的圖片,後上文本源碼

      總體例子

 

核心函數

 

 

對於多位元組wchar 到 lpcswtr 的轉化函數介紹,請轉到 該連結

http://www.cnblogs.com/linguanh/p/4241939.html

 

 1 #include <iostream> 2 #include <fstream> 3 #include <Windows.h> 4 #include <wininet.h> 5 #define MAXBLOCKSIZE 28+1 // openID 固定長 28  6 #pragma   comment(lib,"wininet.lib") //引入動態庫 7  8 char* getWeiXinFromUserNameFromSEA(const char*); 9 using namespace std;10 11 int main(){12     char *p=NULL; //用於存放返回結果13     p=getWeiXinFromUserNameFromSEA("http://913337456-my.stor.sinaapp.com/xxx.txt");14 15     cout<<p;16     return 0 ; 17 } 18  19 //我這裡設定了函數 帶有 傳回值,大家可以不適用傳回值!20 char* getWeiXinFromUserNameFromSEA(const char *Url){21     char *str = new char[MAXBLOCKSIZE]; // 用於最後返回的結果,動態分配22     const char *x="From_AF"; int i = 0;//第一個是開啟標記,i是下面的轉化控制變數 23     WCHAR exchange_text_from_url[256],exchange_text_from_x[256];24     LPCWSTR py = exchange_text_from_url;// url 轉 lpcwstr 的中間變數25     LPCWSTR pz = exchange_text_from_x; //另外的資訊26     //unicode編碼 下的 設定,我這裡使用了寬位元組,免去轉換的麻煩27     MultiByteToWideChar( 0, 0,x, -1,exchange_text_from_x, 64 );//WCHAR to LPCWSTR,轉化28     MultiByteToWideChar( 0, 0,Url, -1, exchange_text_from_url, 256 );29     //結束轉化30     HINTERNET handle_for_init_internet = InternetOpen("From_AF", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);31      if (handle_for_init_internet != NULL){32          HINTERNET handle_for_read_info = InternetOpenUrl(handle_for_init_internet, Url, NULL,NULL,NULL,NULL);33          if (handle_for_read_info != NULL){34              char result[MAXBLOCKSIZE]; //用於儲存 緩衝區的資料群組合35              char buffer[MAXBLOCKSIZE];//下載檔案的緩衝區36              DWORD bytes_read = 1;//下載的位元組數37              BOOL temp_boolean;38              while(bytes_read!=0){ 39                  //使用 InternetReadFile 從緩衝區 讀取 資料到 buffer 字串,要度的位元組數是 buffer的有效長度,控制是 bytes_read40                  temp_boolean = InternetReadFile(handle_for_read_info,buffer,sizeof(buffer), &bytes_read);       41              }42              for(i;i<MAXBLOCKSIZE-1;i++){43                  if(i==MAXBLOCKSIZE-2 && buffer[i]==‘0‘){ //去掉最後的幹擾值 044 45                  }else if(buffer[i]>=34 && buffer[i]<=126){ //多種測試,最終還是使用 ASCII 碼範圍判斷來解決了 燙燙燙~~~~46                     //cout<<buffer[i]; //通過使用迴圈 針對性地 輸出單個 字元消除緩衝區的其他混雜 空量47                     //這裡不直接搞出 buffer 是因為,緩衝區裡有很多 不知什麼資料在輸出的時候會變成很多燙,一般是空才會有燙48                      result[i]=buffer[i];  //經過測試,這個逐個賦值能夠去掉 其中夾雜的 燙~~~49                  }50              } 51              result[i]=‘\0‘; //賦值 結尾 符,防止 自身爆 燙52              strcpy(str,result); //copy 給 字串指標,用於返回53              //安全操作,銷毀控制代碼54              InternetCloseHandle(handle_for_read_info); handle_for_read_info = NULL;55          }56          InternetCloseHandle(handle_for_init_internet); handle_for_init_internet = NULL;57          return str;58     } 59 }

 

C++ 與 php 的互動 之----- C++ 擷取 網頁文字內容,擷取 php 的 echo 值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.