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:
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.
avec taille finale du fichier téléchargé exactement égale au fichier distant.

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:
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;
Y a-t-il une subtilité ?
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é.