Indication de la progression avec le téléchargement du fichier HTTP à l'aide de WinHTTP

StackOverflow https://stackoverflow.com/questions/1407023

  •  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!

Était-ce utile?

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 ;-).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top