我问下各位大人, 为什么用CInternetSession::OpenURL却得不到网页的全部源代码呀?

register_jhb 2008-09-25 08:18:17
CInternetSession session(NULL, 0);
CHttpFile * phttp = NULL;

CString m_WebSrc;
CString tempstr;

phttp = (CHttpFile*) session.OpenURL("http://www.163.com");

if (phttp != NULL)
TRACE("URL open suceed\r\n\r\n");

while(phttp->ReadString(tempstr))
{

m_WebSrc += "\r\n";
m_WebSrc += tempstr;
}

TRACE("%s", (LPCTSTR)m_WebSrc);

phttp->Close;
session.Close;

显示网页源代码只有一小部分. 这是为什么呀, 有没有哪位大侠遇到过这样的问题
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dirdirdir3 2008-09-25
  • 打赏
  • 举报
回复
CString好象是有字数上限的,自己开个char*的buf
register_jhb 2008-09-25
  • 打赏
  • 举报
回复
谢谢呀. 用逐过程调试看了一下, 发现tempstr是在一直变的.
但就是m_WebSrc内容不变, 就是说tempstr没有加入到m_WebSrc中, 不知道是为什么呀, 谢谢
xsc2001 2008-09-25
  • 打赏
  • 举报
回复
应该没有问题呀,可以下载全呀?下载下来的只能是源文件内容。不是服务器端的包括代码的网页。
应该是下载的内容太长了,用TRACE显示不全。你可以保存成文本看一下。
这里给你一个下载网页的函数吧。

//****************************************************************************************//
//函数 GetWebContent
//主要功能: Get方式下载网页
//参数列表:
//返回值:
//备注:
//****************************************************************************************//
CString GetWebContent(CString strURL)
{
CString strSentence;
CString Filecontent;
CInternetSession sess;//Create session
CHttpFile* fileGet;
CException* e = NULL;
TRY
{
fileGet=(CHttpFile*)sess.OpenURL(strURL);//Open file
}
CATCH_ALL(e)
{
fileGet = 0;
}
END_CATCH_ALL

if(fileGet)
{
DWORD dwStatus;
DWORD dwBuffLen = sizeof(dwStatus);
BOOL bSuccess = fileGet->QueryInfo(
HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
&dwStatus, &dwBuffLen);

if( bSuccess && dwStatus>= 200&& dwStatus<300 )
{
while(fileGet->ReadString(strSentence))
Filecontent += strSentence;
}// if bSuccess.
fileGet->Close();
delete fileGet;
}
else
{
TRACE0("对不起,连接超时,无法打开站点!");
Filecontent = "";
}
sess.Close();
return Filecontent;
}

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧