MFC 读取网页源码
来源:互联网 发布:java反序列化漏洞利用 编辑:程序博客网 时间:2024/05/01 23:23
MFC 当中当需要获取网页源码是,可以用到 CInternetSession 类 需要包含头文件 afxinet.h
使用类CInternetSession 创建并初始化一个或多个同时的Internet 会话。如果需要,还可描述与代理服务器的连接。如果Internet连接必须在应用过程中保持着,可创建一个类CWinApp的CInternetSession成员。一旦已建立起Internet 会话,就可调用OpenURL。CInternetSession会通过调用全局函数AfxParseURL来为分析映射URL。无论协议类型如何,CInternetSession 解释URL并管理它。它可处理由URL资源“file://”标志的本地文件的请求。如果传给它的名字是本地文件,OpenURL 将返回一个指向CStdioFile对象的指针。
如果使用OpenURL在Internet服务器上打开一个URL,你可从此处读取信息。如果要执行定位在服务器上的指定的服务(例如,HTTP,FTP或Gopher)行为,必须与此服务器建立适当的连接。直接打开与指定的服务器的指定的类型的连接,请使用下列成员函数:
CInternetSession session;
CHttpFile *file = NULL;
CString
strURL =http://www.baidu.com
CString strHtml = _T(""); //存放网页数据
try
{
file =(CHttpFile*)session.OpenURL(strURL);
}
catch(CInternetException *m_pException)
{
file = NULL;
m_pException->m_dwError;
m_pException->Delete();
session.Close();
// AfxMessageBox(_T("网络连接出现问题,请检查网络"));
MessageBox("网络连接错误","提示",MB_OK);
return;
}
CString strLine;
char sRecived[1024];
if(file != NULL) {
while(file->ReadString((LPTSTR)sRecived,1024)
!=
NULL) {
strHtml += sRecived; }
}
else
{
AfxMessageBox(_T("fail"));
}
session.Close();
file->Close();
delete file; file = NULL;
得到源码后还要进行转换,因为大多数网页是utf-8 格式的,这种格式在MFC 中显示出来为乱码,所以必须转换,用ConvertUtf8ToGBK(CString &strUtf8)
void ConvertUtf8ToGBK(CString &strUtf8)
{
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
unsigned short * wszGBK = new unsigned short[len+1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, (LPWSTR)wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, (LPCWSTR)wszGBK, -1, szGBK, len, NULL,NULL);
strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
最后,得到的字符串就可以正常显示了。。。。
- MFC 读取网页源码
- MFC-抓取网页源码
- 读取网页源码
- 读取网页源码
- java 读取网页源码;
- [VC++]MFC HTTP读取网页
- C#读取网页面源码
- MFC 读取网页输出的内容
- mfc 读取utf8网页不乱码实例
- 【C#】[网络]网页源码读取(WebClient+StreamReader)
- 网页源码读取的一个小问题
- Android 读取网页源码和下载图片
- MFC 利用 CHttpFile类从网页读取 数据
- 在.net中使用xmlhttp组件读取网页源码
- vb.net 读取网页源码(支持各种编码)
- HttpWebRequest读取网页源码转字符串不完整问题
- E语言读取网页源码输出不全的BUG
- 三种asp.net 抓取网页源码实现(asp.net采集,读取源码)
- 程序员有哪些发展方向
- Lustre的安装与配置
- e-人事管理系统-教育培训-应用流程
- Ural 1732. Ministry of Truth 多串匹配KMP
- 网站推广中三种付费推广方法的效果性价比
- MFC 读取网页源码
- tomcat启动出现异常:java.lang.OutOfMemoryError: Java heap space
- poj3083
- 对互联网海量数据实时计算的理解 ——摘抄自http://tech.ddvip.com/2011-10/1319783898169602.html
- 浅谈伪原创为SEO创造内容
- 网站推广不只是seo一种方法
- 关于进程
- ExecuteReader报错,语法错误
- 设计模式学习--观察者模式(observer)