首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

使用 MFC CInternetSession 實現遠程網頁源碼獲取

     編輯:關於VC++

在網絡編程中,獲取遠程網頁的原始 HTML 源碼是一項基礎且實用的技術。本文將介紹如何利用 MFC 的 CInternetSession 與 CHttpFile 類,在基於對話框的應用程式中實現網頁內容的抓取與顯示。

核心實現步驟

首先,需在專案的預編譯標頭檔 stdafx.h 中引入網絡擴展標頭:

#include <afxinet.h>

這將使 CInternetSession 等類可用。接著在按鈕點擊或相應事件處理函數中編寫核心邏輯:

  1. 建立網際網路會話:實例化 CInternetSession 物件。
  2. 打開目標 URL:呼叫 OpenURL() 方法,取得 CHttpFile* 指標。
  3. 逐行讀取資料:使用 ReadString() 迴圈將網頁原始碼累加到 CString 變數中。
  4. 更新 UI 顯示:透過 UpdateData(FALSE) 將讀取到的內容同步到編輯控制項。
  5. 資源清理:關閉檔案與會話,釋放資源。

關鍵代碼範例

// 交換控制項與變數資料,清空顯示區
UpdateData(TRUE);
m_SiteInfo = _T("");
UpdateData(FALSE);

// 建立會話並連線
CInternetSession mySession(NULL, 0);
CHttpFile* myHttpFile = NULL;
m_SiteInfo = _T("連接到站點 ") + m_SiteName + _T("\r\n");
UpdateData(FALSE);

CString myData;
myHttpFile = (CHttpFile*)mySession.OpenURL(m_SiteName);

while (myHttpFile->ReadString(myData)) {
    m_SiteInfo += _T("\r\n") + myData;
}

myHttpFile->Close();
mySession.Close();
UpdateData(FALSE); // 將完整源碼顯示到介面

運行環境與注意事項

  • 測試環境:Windows 2000 Professional + Visual C++ 6.0
  • 需確保目標機器具備網絡連線能力
  • 若目標網站需 HTTPS,需額外處理 SSL 憑證驗證
  • 大型網頁建議加入進度提示或異步讀取,避免界面凍結

程式運行效果圖

圖一 示例代碼運行效果圖

本範例展示了 MFC 封裝 WinInet API 的便利性,開發者可在此基礎上擴展錯誤處理、超時設定、POST 資料提交等進階功能,快速構建網絡資料採集工具。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved