如何只得到<html>和</html>的内容
解决方案 »
- Visual Studio 条件断点调试速度超慢,几乎不动!
- 用VC编程设置双网卡电脑的其中一个网卡的Internet连接共享属性
- 有谁用过datagrid中的colcontaining方法的?
- VC7 & VC6 消息响应函数的问题
- VC中如何使用XMLHTTP读取网页数据?
- 新手,谁可以给我一份英文版的"Win32多线程程序设计"和"windows核心编程"
- 隔一段时间执行下一条语句
- 请教:ado数据库编程
- 通过网络如何命令-台联网的机器关机?
- 键盘的问题
- 为什么,用AfxBeginThread生成的线程,调用fopen时有时会出错。返回NULL
- 求字符的ASCII值与其对应的字符串之间的双向转换(BYTE<==>STRING)的程序 百分大放送!!
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
if (!AfxParseURL(strURL, dwServiceType, strServerName, strObject, nPort) ||
dwServiceType != INTERNET_SERVICE_HTTP)
{
return 1;
} CSocket socket; if (!socket.Create())
{
//cerr << _T("Failed to create CSocket object.") << endl;
return 1;
} // cout << _T("Wait... open site: ") << strServerName << endl; if (!socket.Connect(strServerName, nPort))
{
//cerr << _T("Can't open site: ") << strServerName << endl;
return 1;
} TRY
{
int n;
CString str, strTemp;
CSocketFile socketFile(&socket);
CArchive arIn(&socketFile, CArchive::load);
CArchive arOut(&socketFile, CArchive::store);
str = "GET " + strObject + " HTTP/1.1\r\n";
str+="Host:"+strServerName+"\r\n";
str += szHeaders; str += "\r\n";
arOut.WriteString(str);
arOut.Flush(); arIn.ReadString(str);
if (-1 == (n = str.Find(' ')))
{
//错误
return FALSE;
}
if ((strTemp = str.Mid(n + 1, 3)).IsEmpty())
{
//错误
return FALSE;
}
if ("200" == strTemp)
{
//赋初值,不读取http头信息,只读取内容
n = -1;
while (arIn.ReadString(str) && !str.IsEmpty())
{
while (arIn.ReadString(str) && !str.IsEmpty())
{
if (0 == str.Find("Content-Length: "))
{
//得到文件的长度
str = str.Mid(16);
sscanf(str, "%d", &n);
}
}
if (0 > n)
{
n = ((DWORD)(-1)) >> 1;
//错误
return FALSE;
}
while ((0 < n) && arIn.ReadString(str))
{
m_content+=str;
n -= (str.GetLength() + 2);
}
}
AfxMessageBox(m_content);
return TRUE;
}
else if (("301" == strTemp) || ("302" == strTemp))
{
strURL.Empty();
while (arIn.ReadString(str) && !str.IsEmpty())
{
//cout << str;
if (0 == str.Find("Location: "))
{
strURL = str.Mid(10);
break;
}
}
}
}
CATCH_ALL(e)
{
e->Delete();
//cerr << _T("Abort because of exception.") << endl;
}
END_CATCH_ALL
return TRUE;