Bonjour,
Je tente de faire un simple download HTTP via Indy. Le fichier est un executable zippé, mais le même problème se pose sur un exécutable non zippé. Problème : Le fichier résultant contient des fragments de header HTTP.
Apparemment, le téléchargement se passe bien jusqu'au 4 premiers Ko.
Ensuite, je trouve ceci dans le fichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 HTTP/1.1 200 OK Date: Wed, 13 Apr 2011 16:10:51 GMT Server: Apache/1.3.41 Ben-SSL/1.59 Last-Modified: Tue, 20 Jul 2010 10:58:27 GMT ETag: "7008b0f1-152ba7-4c458153" Accept-Ranges: bytes Content-Length: 1387431 Content-Type: application/zip
Enfin, les 4 premiers Ko sont à nouveau ajoutés et ainsi de suite jusqu'à ce que le fichier final fasse précisément la taille du fichier à télécharger. En clair, j'obtiens un fichier dont la structure est la suivante:
avec taille finale du fichier téléchargé exactement égale au fichier distant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 4096 premiers octets corrects Header HTTP Répétition des 4096 premiers octets Header HTTP etc.
Voici le code pascal qui réalise le téléchargement, src étant le nom du fichier
à télécharger et dst le fichier local à enregistrer:
Y a-t-il une subtilité ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Stream := TFileStream.Create(dst, (fmCreate)); try idHttp1.Get(gc_www_download + src, Stream); //téléchargement except on e: Exception do begin result := false; end; end; Stream.Free;
Précision: Indy 10.2.0.3 sous lazarus. Le développement étant fait pour Mac OS X.
Merci d'avance pour toute suggestion.
André.
Partager