if(!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL))我是这样做的可是每次得到的dwByteToRead值都是一个固定的值并不是真实的文件大小请问应该怎么做啊

解决方案 »

  1.   

    try   {      DWORD BufLen=HTTPGET_BUFFER_MAX;       
         DWORD dwIndex=0;         
       bool RetQueryInfo=HttpQueryInfo(FhRequest,            HTTP_QUERY_CONTENT_LENGTH,            Buffer, &BufLen,            &dwIndex);   
       if( RetQueryInfo==false) 
    throw(Exception("Error:HttpQueryInfo"));      DoOnStatusText("ok:HttpQueryInfo");     
     int FileSize=StrToInt(Buffer); // 文件大小      
    DoOnGetFileSize(FileSize);   }
    catch(Exception &exception)  
     {      DoOnStatusText(exception.Message);   }   
    return FileSize;
      

  2.   


         DWORD BufLen=HTTPGET_BUFFER_MAX;
         DWORD dwIndex=0;
         bool RetQueryInfo=HttpQueryInfo(FhRequest,     HTTP_QUERY_CONTENT_LENGTH,      
          Buffer, &BufLen,            &dwIndex);   
         int FileSize=StrToInt(Buffer); // 文件大小       
      

  3.   

    char Buffer[HTTPGET_BUFFER_MAX+4]; // 数据缓冲区
      

  4.   

    兄弟提示如下错误HTTPGET_BUFFER_MAX' : undeclared identifier
      

  5.   

    dwIndex = 4;
    if(!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL))
      

  6.   

    举个例子:
    #define HTTPGET_BUFFER_MAX 200
    char Buffer[HTTPGET_BUFFER_MAX+4]; // 数据缓冲区
    CString FileName="download/8051.zip";
    CString HostName="soft.laogu.com";
    HINTERNET FhSession; // 会话句柄
    HINTERNET FhConnect; // http连接句柄
    HINTERNET FhRequest; // http请求句柄
    FhSession=InternetOpen("http-get-demo",            INTERNET_OPEN_TYPE_PRECONFIG,
                NULL,NULL,            0); 
    FhConnect=InternetConnect(FhSession,  HostName,            INTERNET_DEFAULT_HTTP_PORT, NULL,NULL,INTERNET_SERVICE_HTTP, 0, 0);
    const char *FAcceptTypes = "*/*";      FhRequest = HttpOpenRequest(FhConnect,            "GET",    
    FileName,          
    "HTTP/1.1",      
    NULL,           
    &FAcceptTypes,         
    INTERNET_FLAG_RELOAD,        
    0);
     HttpSendRequest(FhRequest, NULL, 0, NULL, 0);
          DWORD BufLen=HTTPGET_BUFFER_MAX;      
           DWORD dwIndex=0;         
          bool RetQueryInfo=HttpQueryInfo(FhRequest,           
      HTTP_QUERY_CONTENT_LENGTH,         
      Buffer, &BufLen,            &dwIndex);   
    int FileSize=StrToInt(Buffer);   
    InternetCloseHandle(FhRequest); 
    InternetCloseHandle(FhConnect);
    InternetCloseHandle(FhSession);      
     FhSession=NULL;      FhConnect=NULL;      FhRequest=NULL;
    取得结果是133k