使用WinHTTP下载HTTP文件的进度指示

时间:2009-09-10 18:48:16

标签: c++ winhttp winhttprequest

我想在使用WinHTTP下载文件时在我的C ++ Windows应用程序中实现进度条。知道怎么做吗?看起来好像WinHttpSetStatusCallback是我想要使用的,但是我没有看到要查找的通知......或者如何获得“下载百分比”......

帮助!

谢谢!

1 个答案:

答案 0 :(得分:5)

the docs

WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE

  

可以使用检索数据   WinHttpReadData。该   lpvStatusInformation参数点   到包含数量的DWORD   可用的数据字节。该   dwStatusInformationLength参数   本身是4(DWORD的大小)。

WINHTTP_CALLBACK_STATUS_READ_COMPLETE

  

数据已成功读取   服务器。 lpvStatusInformation   参数包含指向的指针   调用中指定的缓冲区   WinHttpReadData。该   dwStatusInformationLength参数   包含读取的字节数。

可能还有其他相关通知,但这两个似乎是关键通知。获得“百分比”并不一定是微不足道的,因为您可能不知道您获得了多少数据(并非所有下载都设置了内容长度......);您可以通过以下方式获取标题:

WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE

  

已收到回复标头   并可用   WinHttpQueryHeaders。该   lpvStatusInformation参数是   NULL。

如果Content-Length IS可用,则可以通过跟踪每个“可用数据”通知的总字节数来计算百分比,否则您的猜测与我的一样好; - )。