[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

附:一个调用这两个函数获取外网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)
还没有任何评论哟~
