IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

[ICS] [HTTP] [ContentLenght]


Sujet :

Web & réseau Delphi

  1. #1
    Membre habitué
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par défaut [ICS] [HTTP] [ContentLenght]
    J'utilise un composant HTTP (ics) le problème est que la taille indiqué est incorrecte voir ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      try
        HttpCli1.URL := '192.168.1.121/tut.txt'; //le fichier tut.txt n'existe pas
        HttpCli1.Head;
      except
      end;
      Showmessage(IntToStr(HttpCli1.ContentLength));  //ça donne 77, comprend pas
     
      try
        HttpCli1.URL := '192.168.1.121/test.txt'; //le fichier test.txt existe
        HttpCli1.Head;
      except
      end;
      HttpCli1.ContentLength; //ça donne -1 comprend pas non plus
    si j'inverse les deux bouts de code ça fonctionne pas vraiment mieux premier fait 43(c ok) et l'autre 77 (ba!)

    Existe-t-il un autre moyen avec ICS en HTTP de savoir quel est la taille du fichier ? A moins que j'ai pas compris comment on l'utilise ?

  2. #2
    Membre expérimenté
    Profil pro
    ----
    Inscrit en
    Mai 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ----

    Informations forums :
    Inscription : Mai 2004
    Messages : 185
    Par défaut Re: [ICS] [HTTP] [ContentLenght]
    Je te dirait d'essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
      Showmessage(IntToStr(HttpCli1.ContentLength));  //Verifie s'il n'y a pas de résultat rémanent
     
      try
        HttpCli1.URL := '192.168.1.121/tut.txt'; //le fichier tut.txt n'existe pas
        HttpCli1.Head;
      except
      end;
      Showmessage(IntToStr(HttpCli1.ContentLength));  //ça donne 77, comprend pas
     
      try
        HttpCli1.URL := '192.168.1.121/test.txt'; //le fichier test.txt existe
        HttpCli1.Head;
      except
      end;
      HttpCli1.ContentLength; //ça donne -1 comprend pas non plus

  3. #3
    Membre habitué
    Inscrit en
    Mars 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 11
    Par défaut
    Il ne faut pas l'utilsier comme cela, pour connaitre la taille du fichier télécharger, j'utilise quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    var
      Taille : Extended;
     
    procedure GetTaille(const AUrl : string; out DestStream: TStream; const APort : integer = 80);
    var
      Liste : TStrings;
      Ligne : String;
      i : Integer;
    begin
      Ligne := '';
      HttpCli1.URL        := AUrl;
      HttpCli1.ProxyPort  := IntToStr(APort);
      HttpCli1.RcvdStream := DestStream;
      HttpCli1.Head();
      Liste := HttpCli1.RcvdHeader;
     
      for i := 0 to Liste.Count - 1 do begin
        Ligne := copy(Liste.Strings[i], 1, 16);
        Ligne := UpperCase(Ligne);
     
        if (Ligne = 'CONTENT-LENGTH: ') then begin
          Ligne := '';
          Ligne := copy(Liste.Strings[i], 17, Length(Liste.Strings[i]));
          Taille := StrToFloat(Ligne);
          Taille := (Taille / 1024) / 1024; // en Mo
        end;
      end;
    end;
    J'espere que ça t'aidera

  4. #4
    Membre habitué
    Inscrit en
    Juin 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 11
    Par défaut voilà !
    Oua cool merci c exactement ça.

    Ba j'ai adapté un peu la fonction à ma sauce je la pose là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {----------------------------------GET-TAILLE----------------------------------}
    (j'ai créé une classe THttpClient qui hérite de THttpCli)
    function THttpClient.GetTaille(const AUrl : string) : cardinal;
    var i, TmpPos : Integer;
    Const TmpContentLength = 'Content-length: ';
    begin
      URL := AUrl;
      try
        Head();   
        i := -1;
        repeat
          Inc(i);
          TmpPos := Pos(UpperCase(TmpContentLength), UpperCase(RcvdHeader.Strings[i]));
        until (TmpPos<>0) and (i<RcvdHeader.Count);
        if TmpPos<>0
        then result := StrToInt64Def(Copy(RcvdHeader.Strings[i], TmpPos+Length(TmpContentLength), Length(RcvdHeader.Strings[i])), 0)
        else result := 0;
      except
        result := 0;
      end;
    end;
    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lié au protocole HTTP.
    Par giviz dans le forum Développement
    Réponses: 2
    Dernier message: 03/10/2003, 17h36
  2. [SSL]Communication avec un serveur en https
    Par menon dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 04/09/2003, 16h38
  3. [HTTP] Wget-like
    Par tmonjalo dans le forum Développement
    Réponses: 2
    Dernier message: 28/07/2003, 13h39
  4. [HTTP] Syntaxe méthode POST
    Par Gruik dans le forum Développement
    Réponses: 3
    Dernier message: 26/07/2003, 17h12
  5. [web] rapatrier un document via HTTP
    Par ddhia dans le forum Web
    Réponses: 2
    Dernier message: 08/04/2003, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo