如下代码
CInternetSession session;
CInternetFile* file=NULL;
try
{
file=(CInternetFile*)session.OpenURL(strUrl);      
}
catch(CInternetException* pEx)
{
file=NULL;
pEx->Delete();
return FALSE ; 
}当页面不存在时,OpenUrl仍将返回一个页面,提示"无法找到网页" HTTP 404 - 无法找到文件。我的问题 :不解析返回的文本,我怎么才能知道当前页面是不存在的?谢谢

解决方案 »

  1.   

    在OpenURL查询一下,试一下QueryOption看看行不行
      

  2.   

    对 http 连接,下面代码有效:
    DWORD dwStatusCode ; 
    ((CHttpFile*)file)->QueryInfoStatusCode(dwStatusCode) ; // 对于 http 连接,dwStatusCode 中放的是错误码 
    // 200 :  OK Action complete successfully 
    // 404 :  Not Found The requested file was not found. 但是这种代码写到程序里就太过分了,寻求更好的解决办法。
      

  3.   

    这样稍微好一点 :  DWORD dwStatusCode ; 
    CHttpFile* pHttpFile = (static_cast<CHttpFile*>(file)) ; 
    pHttpFile->QueryInfoStatusCode(dwStatusCode) ;
      

  4.   

    大家随便看看。 
    不知道 new 会不会抛出异常 :(#include <afxinet.h> 
    BOOL TryHttpUrl(CString strHttpUrl , CString strLocalFileName )
    {
    CInternetSession session;
    CHttpFile* pHttpFile = NULL;
    try
    {
    pHttpFile = static_cast<CHttpFile*>(session.OpenURL(strHttpUrl));      
    if( !pHttpFile )
    return FALSE ; 
    }
    catch(CInternetException* pEx)
    {
    pEx->Delete();
    return FALSE ; 
    }
    // 
    DWORD dwStatusCode ; 
    pHttpFile->QueryInfoStatusCode(dwStatusCode) ;
    if( 200 != dwStatusCode ) 
    {
    pHttpFile->Close() ;
    delete pHttpFile ; 
    return FALSE ; 
    }
    // 
    try
    {
    CFile newFile;
    newFile.Open(strLocalFileName,CFile::modeCreate | CFile::modeWrite); 
    newFile.SetLength( pHttpFile->GetLength() ) ;  const int buffer_size = 1024 ; 
    int num = buffer_size ; 
    char *buffer = new char[buffer_size] ; 
    while( buffer_size == num )
    {
    num = pHttpFile->Read(buffer,buffer_size) ; 
    newFile.Write(buffer,num) ; 
    }
    delete []buffer ; 
    newFile.Close() ; 
    }
    catch(CInternetException *e)
    {
    e->Delete() ; 
    pHttpFile->Close() ; 
    delete pHttpFile ; 
    return FALSE ; 
    }
    catch(CFileException *e)
    {
    e->Delete() ; 
    pHttpFile->Close() ; 
    delete pHttpFile ; 
    return FALSE ; 
    }
    catch(...)
    {
    ASSERT(0) ; 
    pHttpFile->Close() ; 
    delete pHttpFile ; 
    return FALSE ; 
    } pHttpFile->Close();
    delete pHttpFile ; 
    return TRUE ; 
    }
      

  5.   

    修改一下 :
    newFile.SetLength( pHttpFile->GetLength() ) ; 
    SeekToBegin( );
      

  6.   

    newFile.SetLength(  pHttpFile-  >GetLength()  )  ;    
    newFile.SeekToBegin(  );
      

  7.   

    唉,再改一下(像我这么负责的人真难得呀~~~) while( 0 != num )
    {
    num = pHttpFile->Read(buffer,buffer_size) ; 
    newFile.Write(buffer,num) ; 
    }