PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Suggestion pour ameliorer HTTPRequete()
Suggestion pour ameliorer HTTPRequete()
Débuté par metsdumanche, 07 jan. 2005 02:17 - 6 réponses
Posté le 07 janvier 2005 - 02:17
Bonjour,

La fonction HTTPRequête() est bien pratique. Mais ...
Si je veux juste connaître la taille d'un fichier binaire
sur un serveur HTTP, je suis obligé de le charger en
entier ! Ou alors je n'ai pas compris un truc.

Exemple :

SI HTTPRequête("http://www.serveur.com/fichier.zip") ALORS
szBuf = HTTPDonneRésultat(HTTPEntête)
nPos = Position(szBuf,"Content-Length:")
SI nPos > 0 ALORS nLg = Milieu(szBuf,nPos+15)
FIN

Je récupère bien la taille du fichier en question, mais seulement
après l'avoir téléchargé ... Alors qu'en FTP, je peux demander
juste la taille du fichier sans le télécharger.

Y a-t-il une syntaxe particulière de HTTPRequête qui permet
de ne récupérer que l'entête du fichier ?

Merci.

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/
Posté le 07 janvier 2005 - 10:55
A ma connaissance le protocole HTTP ne permet pas de récupérer seulement la
taille d'un fichier. Il n'est pas prévu à la base pour le transfert de
fichier.

A vérifier...

David

"Jean-Michel CAMBOT" <metsdumanche@baliciel.virer.com> a écrit dans le
message de news:41ddcbdd@news.pcsoft.fr...
Bonjour,

La fonction HTTPRequête() est bien pratique. Mais ...
Si je veux juste connaître la taille d'un fichier binaire
sur un serveur HTTP, je suis obligé de le charger en
entier ! Ou alors je n'ai pas compris un truc.

Exemple :

SI HTTPRequête("http://www.serveur.com/fichier.zip") ALORS
szBuf = HTTPDonneRésultat(HTTPEntête)
nPos = Position(szBuf,"Content-Length:")
SI nPos > 0 ALORS nLg = Milieu(szBuf,nPos+15)
FIN

Je récupère bien la taille du fichier en question, mais seulement
après l'avoir téléchargé ... Alors qu'en FTP, je peux demander
juste la taille du fichier sans le télécharger.

Y a-t-il une syntaxe particulière de HTTPRequête qui permet
de ne récupérer que l'entête du fichier ?

Merci.

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/
Posté le 07 janvier 2005 - 15:25
"David" a écrit :

A ma connaissance le protocole HTTP ne permet
pas de récupérer seulement la taille d'un fichier. Il
n'est pas prévu à la base pour le transfert de
fichier.
A vérifier...


Si, il le permet ! D'ailleurs, avec d'autres langages, c'est
une chose tout à fait possible. Par exemple en Delphi,
avec le composant HTTP (Indy), on a une méthode
Head(URL) qui permet de ne récupérer que l'entête,
qui contient la description de la page, dont sa taille.
On peut ainsi récupérer la taille d'un gros fichier sans
avoir besoin de le télécharger comme avec WinDev ...
Pour mon programme, j'ai été obligé de l'écrire en Delphi,
car ça ne marche pas avec WinDev (qui ne sait pas non
plus créer de DLL d'ailleurs ...).

Je pensais qu'il y avait peut-être une syntaxe particulière
de la procédure HTTPRequête() avec des paramètres pour
ne récupérer que l'entête de la page. Quelqu'un sait ça ?

Merci.

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/
Posté le 07 janvier 2005 - 17:10
Bonjour,

Sauf erreur de ma part il est possible en WinDev aussi de récupérer que
l'entête , syntaxe :
ResLancement = HTTPRequête("http://www.WinDev.COM")
SI ResLancement = Vrai ALORS
Info("Entête : "+HTTPDonneRésultat(httpEntête))
FIN


[DrCharly93] www.wdforge.org

Jean-Michel CAMBOT a écrit :
"David" a écrit :


A ma connaissance le protocole HTTP ne permet
pas de récupérer seulement la taille d'un fichier. Il
n'est pas prévu à la base pour le transfert de
fichier.
A vérifier...


Si, il le permet ! D'ailleurs, avec d'autres langages, c'est
une chose tout à fait possible. Par exemple en Delphi,
avec le composant HTTP (Indy), on a une méthode
Head(URL) qui permet de ne récupérer que l'entête,
qui contient la description de la page, dont sa taille.
On peut ainsi récupérer la taille d'un gros fichier sans
avoir besoin de le télécharger comme avec WinDev ...
Pour mon programme, j'ai été obligé de l'écrire en Delphi,
car ça ne marche pas avec WinDev (qui ne sait pas non
plus créer de DLL d'ailleurs ...).

Je pensais qu'il y avait peut-être une syntaxe particulière
de la procédure HTTPRequête() avec des paramètres pour
ne récupérer que l'entête de la page. Quelqu'un sait ça ?

Merci.
Posté le 07 janvier 2005 - 17:42
"[DrCharly93]" a écrit :

Sauf erreur de ma part il est possible en WinDev aussi de récupérer que
l'entête , syntaxe :
ResLancement = HTTPRequête("http://www.WinDev.COM")
SI ResLancement = Vrai ALORS
Info("Entête : "+HTTPDonneRésultat(httpEntête))
FIN


C'est ce que je croyais moi aussi ... Mais non !
Quand on appelle HTTPRequête("..."), la requête est exécutée
(logique), et donc le fichier téléchargé en intégralité. On peut
ensuite récupérer la taille avec HTTPDonneRésultat(HTTPEntête),
mais j'aurais aimé connaître la taille AVANT de télécharger le fichier
(surtout si le fichier fait plusieurs Mo ...).

Le programme que je dois développer passe en revue une base
de logiciels en téléchargement (http://www.logitheque.com/), et
doit vérifier à la volée l'existence et la taille des fichiers proposés
(il y en a plus de 10 000 ...). Je ne peux pas me permettre de
les télécharger un par un pour connaître leur taille :-/

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/
Posté le 07 janvier 2005 - 18:32
Bon j'avoue qu'il est de plus en plus utilisé pour les transferts de
fichiers, mais ce n'est pas son but... il y a le FTP pour ça.
Sinon pour connaitre la taille d'un fichier, il faudrait pouvoir faire une
requete HEAD sur le serveur mais ça je connais pas dans Windev, les seules
requetes développées sont apparemment GET et POST.
Reste à utiliser une socket pour ça. Et tu envoies les requetes que tu veux.

David

"Jean-Michel CAMBOT" <metsdumanche@baliciel.virer.com> a écrit dans le
message de news:41de8474$1@news.pcsoft.fr...

"David" a écrit :

A ma connaissance le protocole HTTP ne permet
pas de récupérer seulement la taille d'un fichier. Il
n'est pas prévu à la base pour le transfert de
fichier.
A vérifier...

Si, il le permet ! D'ailleurs, avec d'autres langages, c'est
une chose tout à fait possible. Par exemple en Delphi,
avec le composant HTTP (Indy), on a une méthode
Head(URL) qui permet de ne récupérer que l'entête,
qui contient la description de la page, dont sa taille.
On peut ainsi récupérer la taille d'un gros fichier sans
avoir besoin de le télécharger comme avec WinDev ...
Pour mon programme, j'ai été obligé de l'écrire en Delphi,
car ça ne marche pas avec WinDev (qui ne sait pas non
plus créer de DLL d'ailleurs ...).

Je pensais qu'il y avait peut-être une syntaxe particulière
de la procédure HTTPRequête() avec des paramètres pour
ne récupérer que l'entête de la page. Quelqu'un sait ça ?

Merci.

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/

Posté le 08 janvier 2005 - 00:29
"David" a écrit :

Sinon pour connaitre la taille d'un fichier, il faudrait pouvoir
faire une requete HEAD sur le serveur mais ça je connais
pas dans Windev, les seules requetes développées sont
apparemment GET et POST.


En effet, c'est ce que je trouve dans l'aide.

Reste à utiliser une socket pour ça. Et tu envoies les
requetes que tu veux.


C'est une possibilité en effet, mais pas très simple, alors
qu'il suffirait d'une fonction HTTPHead(url) ... :-/

--
Jean-Michel CAMBOT metsdumanche chez baliciel.com
Baliciel HomePage : http://www.baliciel.com/