关于网友提出的“ CInternetSession获取网页内容的问题”问题疑问,本网通过在网上对“ CInternetSession获取网页内容的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: CInternetSession获取网页内容的问题
描述: 用CInternetSession类编了一段程序,想要获得网页内容。调试时同时打开IE比较获取的网页内容,发现,有时候在网页内容更新以后,我的程序没法获得最新的网页,一定要在IE中刷新一下,才能取得最新内容,否则就还是原来的。怀疑我的程序读了cache里的内容,就尝试使用INTERNET_FLAG_DONT_CACHE选项,但还是一样。请诸位大侠指教,程序如下
try {
CInternetSession m_Session ("Microsoft Internet Browser",0);
CHttpFile* m_HttpFile = NULL;
m_Session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,1000);
m_Session.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 1000);
m_Session.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 1000);
m_Session.SetOption(INTERNET_OPTION_CONNECT_BACKOFF,1000);
m_Session.SetOption(INTERNET_OPTION_CONNECT_RETRIES,2);
m_HttpFile = (CHttpFile*)m_Session.OpenURL(m_URL);
// m_HttpFile = (CHttpFile*)m_Session.OpenURL(m_URL,1,
// INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_EXISTING_CONNECT |
// INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_DONT_CACHE, NULL,0);
DWORD dwStatusCode;
CString siteInfo;
m_HttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode != 200) { // 网页不存在
return " 网页不存在! ";
}
CString myData;
while(m_HttpFile->ReadString(myData)) {
.
.
.
}
m_HttpFile->Close();
m_Session.Close();
}
catch (CInternetException* pEx) {
pEx->Delete();
return " 致命错误! ";
}
解决方案1: 有两个办法,第一个办法,就像你现在看到的CSDN一样,加随机参数,比如说我们这个网页是http://community.csdn.net/Expert/topic/4324/4324348.xml?temp=.9382288
这个?temp=.9382288是随机生成防止使用Cache的。
第二个办法,不使用包装好的OpenURL,改用CInternetSession::GetHttpConnection、CHttpConnection::OpenRequest等几个函数:
下表显示在典型 HTTP 客户端应用程序中可能执行的步骤:
目标 采取的操作 效果
开始 HTTP 会话。 创建 CInternetSession 对象。 初始化 WinInet 并连接到服务器。
连接到 HTTP 服务器。 使用 CInternetSession::GetHttpConnection。 返回 CHttpConnection 对象。
打开 HTTP 请求。 使用 CHttpConnection::OpenRequest。 返回 CHttpFile 对象。
发送 HTTP 请求。 使用 CHttpFile::AddRequestHeaders 和 CHttpFile::SendRequest。 查找文件。如果没有找到该文件,则返回 FALSE。
从文件中读取。 使用 CHttpFile。 使用您提供的缓冲区读取指定数目的字节。
处理异常。 使用 CInternetException 类。 处理所有常见的 Internet 异常类型。
结束 HTTP 会话。 处置 CInternetSession 对象。 自动清理打开的文件句柄和连接。
以上介绍了“ CInternetSession获取网页内容的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3096060.html