|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| 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/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|