Advertisement

[MFC] 获取网页源代码

阅读量:

使用MFC获取网页源代码:

复制代码
 void CXXXDlg::VisitWebsite(CString strURL, CString &strHTML)    // strURL 网址;strHTML 输出网页源代码

    
 {
    
 	if (strURL.Left(7) != "http://")
    
 		strURL.Format(_T("http://%s"), strURL);
    
  
    
 	CInternetSession session(_T("HttpClient"));		// 定义网络连接Session
    
 	TCHAR *url = (LPTSTR)(LPCTSTR)strURL;
    
 	CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);  // 定义一个文件指针
    
 	DWORD dwStatusCode;  
    
 	pfile -> QueryInfoStatusCode(dwStatusCode);  
    
 	if(dwStatusCode == HTTP_STATUS_OK)  
    
 	{  
    
 		CString content;  
    
 		CString data;  
    
 		while (pfile -> ReadString(data))  
    
 		{  
    
 			content  += data ;  	 
    
 		}
    
 		char *pch;
    
 		pch = new char[content.GetLength() * sizeof(TCHAR)+ 1];
    
 		memcpy(pch, content,content.GetLength() * sizeof(TCHAR));
    
 		content = UTF8ToUnicode(pch);
    
 		//AfxMessageBox(content);
    
 		strHTML = content;
    
 	}   
    
 	pfile -> Close();  
    
 	delete pfile;  
    
 	session.Close(); 
    
 }
    
  
    
 CString CXXXDlg::UTF8ToUnicode(char* UTF8)
    
 {
    
     DWORD dwUnicodeLen;        //转换后Unicode的长度
    
     TCHAR *pwText;            //保存Unicode的指针
    
     CString strUnicode;        //返回值
    
     //获得转换后的长度,并分配内存
    
     dwUnicodeLen = MultiByteToWideChar(CP_UTF8,0,UTF8,-1,NULL,0);
    
     pwText = new TCHAR[dwUnicodeLen];
    
     if (!pwText)
    
     {
    
         return strUnicode;
    
     }
    
     //转为Unicode
    
     MultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen);
    
     //转为CString
    
     strUnicode.Format(_T("%s"),pwText);
    
     //清除内存
    
     delete []pwText;
    
     //返回转换好的Unicode字串
    
     return strUnicode;
    
 }
    
  
    
    
    
    
    cpp
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-19/BDc3gj8MCTIiyXaE9wtzuxoLrnYl.png)

附:一个调用这两个函数获取外网IP的方法:

复制代码
 CString CCleanerDlg::GetIPAddress()

    
 {
    
 	CString str(_T(""));
    
 	VisitWebsite(_T("http://city.ip138.com/ip2city.asp"), str);
    
 	// 取出"["与"]"之间的内容,即IP
    
 	str = str.Mid(str.Find(_T("[")) + 1, str.Find(_T("]")) - str.Find(_T("[")) - 1);
    
 	return str;
    
 }
    
    
    
    
    cpp

全部评论 (0)

还没有任何评论哟~