【问题标题】:Progress indication with HTTP file download using WinHTTP使用 WinHTTP 下载 HTTP 文件的进度指示
【发布时间】:2010-11-27 06:43:45
【问题描述】:

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

救命!

谢谢!

【问题讨论】:

标签: c++ winhttp winhttprequest


【解决方案1】:

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 参数为 空。

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

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2022-10-15
    • 2010-10-23
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    相关资源
    最近更新 更多