Indication de la progression avec le téléchargement du fichier HTTP à l'aide de WinHTTP
-
05-07-2019 - |
Question
Je souhaite implémenter une barre de progression dans mon application Windows C ++ lors du téléchargement d'un fichier à l'aide de WinHTTP. Une idée comment faire ça? Il me semble que je veux utiliser WinHttpSetStatusCallback, mais je ne vois pas quelle notification rechercher ... ni comment obtenir le "Pourcentage téléchargé" ...
Aide!
Merci!
La solution
Per les documents :
WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE
Les données sont disponibles pour être récupérées avec WinHttpReadData. le Points de paramètre lpvStatusInformation vers un DWORD contenant le nombre de octets de données disponibles. le Paramètre dwStatusInformationLength lui-même est 4 (la taille d'un DWORD).
et
WINHTTP_CALLBACK_STATUS_READ_COMPLETE
Les données ont été lues avec succès à partir du serveur. Le lpvStatusInformation paramètre contient un pointeur sur la tampon spécifié dans l'appel à WinHttpReadData. le Paramètre dwStatusInformationLength contient le nombre d'octets lus.
Il peut y avoir d'autres notifications pertinentes, mais ces deux semblent être les plus importantes. Obtenir "Pour cent" n'est pas nécessairement anodin, car vous ne savez peut-être pas combien de données vous obtenez (tous les téléchargements n'ont pas la longueur du contenu définie ...); vous pouvez obtenir les en-têtes avec:
WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
L'en-tête de réponse a été reçu. et est disponible avec WinHttpQueryHeaders. le Le paramètre lpvStatusInformation est NULL.
et si Content-Length est disponible, le pourcentage peut être calculé en gardant une trace du nombre total d'octets à chaque "donnée disponible". notification, sinon votre estimation est aussi bonne que la mienne ;-).