查了一下msdn,说返回的值取决于url:URL type Returns
file:// CStdioFile*
http:// CHttpFile*
gopher:// CGopherFile*
ftp:// CInternetFile* 可是我的url是http的,却返回CStdioFile*,为何?
另外,我定义一个file接收返回的网页数据,file = session.OpenURL(m_url);当file定义为CHttpFile*或CInternetFile*时,file->ReadString均能正确读出数据,那么,这两种类型有差别吗?还有,当我的url不是网页而是文件时,例如http://.../1.zip,file应该设为什么类型?应该怎么来接收文件?我的popo:dick_zz,欢迎和我这个菜鸟交流
file:// CStdioFile*
http:// CHttpFile*
gopher:// CGopherFile*
ftp:// CInternetFile* 可是我的url是http的,却返回CStdioFile*,为何?
另外,我定义一个file接收返回的网页数据,file = session.OpenURL(m_url);当file定义为CHttpFile*或CInternetFile*时,file->ReadString均能正确读出数据,那么,这两种类型有差别吗?还有,当我的url不是网页而是文件时,例如http://.../1.zip,file应该设为什么类型?应该怎么来接收文件?我的popo:dick_zz,欢迎和我这个菜鸟交流
当file定义为CHttpFile*或CInternetFile*时,file->ReadString均能正确读出数据当然有区别了
如果用CInternetFile只能用其自己的方法
而CHttpFile可以用两者的方法,你应该好好学习以下C++语法
用CHttpFile就行,它是使用Http协议的网页都可以使用的。
CInternetSession session (_T("Update 1.0"), 1,
INTERNET_OPEN_TYPE_DIRECT);
CStdioFile* pFile = NULL;
CHAR szHead[] = "Accept: */*\r\n\r\n";
DWORD nRead;
CFile myFile;
// CFileException fileException;
if ( !myFile.Open (m_CurrUpdatePath+"\\update.zip", CFile::modeCreate | CFile::modeReadWrite,
NULL) )
{
return FALSE;
}
CString str=m_sWebURL;
str+="/update/update.zip";
// try
{
pFile = session.OpenURL (str, 1, INTERNET_FLAG_RELOAD
|INTERNET_FLAG_TRANSFER_BINARY,
szHead, -1L);
}
do
{
nRead = pFile->Read(sz, 1023);
if (nRead != 0)
myFile.Write (sz, nRead);
}
while (nRead != 0);
myFile.Close();
pFile->Close();
if (pFile != NULL)
delete pFile;
session.Close();