我想用程序下载指定的网页,用的是
CInternetSession 和 CInternetFileDWORD dLength = file->GetLength();
获得的dLength有时与实际长度相差较大,为什么?
如何获得准确的长度,就象FlashGet那样?

解决方案 »

  1.   

    这样的话,手动填写网页申请,使用send()发送过去一般的发送方式为
    send(... GET 网页 ...)
    send(页面信息)
    然后就接收数据,数据先包含一个返回头,然后才是网页数据,具体这样假如我下载以下页面
    http://www.csdn.net/Develop/Read_Article.asp?Id=4816send(...GET /Develop/Read_Article.asp?Id=4816 HTTP/1.1...)
    send(
    Accept: */*\r\n
    Accept-Language: zh-cn\r\n
    Accept-Encoding: gzip, deflate\r\n
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)\r\n
    Host: www.csdn.net\r\n
    Connection: Keep-Alive\r\n
    Cookie: ASPSESSIONIDCCABSCAD=JACFBJLDAKFIELKFCHFDNPHN\r\n
    \r\n )这样服务器会传回一个确认信息加网页数据,确认信息如下:
    HTTP/1.1 200 OK
    Server: Microsoft-IIS/5.0
    Date: Mon, 26 Apr 2004 00:50:38 GMT
    X-Powered-By: ASP.NET
    Content-Length: 15980
    Content-Type: text/html
    Cache-control: private长度信息就在这里了
      

  2.   

    谢谢!
    这是一个解决办法,不过用CHttpFile更简单.
    httpfile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,szLength,&dwSizeOfRq)).大家共同进步.