[Win32] Wininet : savoir si un fichier existe ?

Wininet : savoir si un fichier existe ? [Win32] - C++ - Programmation

Marsh Posté le 27-12-2002 à 17:33:50    

Salut à tous !
Je suis en train de coder un petit soft genre aspirateur de pages web, pour cela j'utilise les fonctions de wininet : InternetOpenUrl, HttpQueryInfo, InternetReadFile, ...
Ca marche plutot bien. Mais j'ai un petit soucis : c'est si l'utilisateur entre un lien non valide.
En effet, j'ai testé le download d'adresses genre un répertoire ou une page inexistante, et mon code est incapable de détecter une erreur, vu que le serveur lui envoit une page genre "erreur 404 file does not exist" ou "Directory Listing Denied".
De même, quand je donne une adresse de site a telecharger, j'obtiens bien le telechargement de la page index.htm ou default.htm s'il y a, mais je ne sais pas récupérer le nom de celle-ci.
ex : j'entre l'url www.pouf.com
il me telecharge www.pouf.com/index.htm
mais je ne sais pas que cette page s'appelle comme ca !
pour l'instant, je magouille en appelant la page index.htm si aucun nom de page n'est fourni :o)
Comment faire pour tester si une page existe ou pas ?
Et quelle est la difference entre utiliser InternetOpenUrl, HttpQueryInfo, InternetReadFile et HttpOpenRequest avec comme parametre "GET" ou autre ... :??:  
merci a vous.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 27-12-2002 à 17:33:50   

Reply

Marsh Posté le 27-12-2002 à 19:32:34    

Je pense pas que tu puisses savoir si un lien fonctionne rééllement puisque pour le savoir faut regarder l'entête de la réponse pour voir le code de retour 404 mais vu que des fois c'est remplacé par un code 302 accompagné d'une redirection, c'est mort.. :(

Reply

Marsh Posté le 27-12-2002 à 19:37:25    

Avec la fonction httpqueryinfo, ça marche pas ?


---------------
each day I don't die is cheating
Reply

Marsh Posté le 27-12-2002 à 22:31:58    

Ben oui en fait c'est avec la fonction HttpQueryInfo.
Mais j'avais pas fait gaffe a toutes les requetes possibles.
http://msdn.microsoft.com/library/ [...] _flags.asp
D'ailleurs, la mojorité ne fonctionnent pas :??: :fou:
 
Pour la soluce, on peut soit faire comme dit *Syl* : s'eplucher a la mano les champs des headers retournee par la requete HTTP_QUERY_RAW_HEADERS_CRLF, soit utiliser HTTP_QUERY_STATUS_CODE et regarder le code retourné, qui donc peut etre un de ceux la :
http://msdn.microsoft.com/library/ [...] _codes.asp
 
Bon ca marche, merci à vous !


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 13-04-2008 à 12:58:38    

Salut,  
Voyant que le sujet à déja été évoqué j'utilise se topic pour poser ma question.  
le HttpQueryInfo ne fonctionne pas avec la requête HTTP_QUERY_CONTENT_LENGTH je ne comprend pas pourquoi,  
je peux télécharger le fichier ... mais pas moyen de recupérér la taille du fichier distant la fonction me renvoie false.
Je me suis dit que j'aller tester HTTP_QUERY_RAW_HEADERS_CRLF.  
J'ai en code retour true et rien dans le buffer qui devait être affecté.  
 
Est-il possible qu'il n'y ai rien dans le header ?
 
Si quelqu'un a une idée.
Merci.


Message édité par yolas22 le 13-04-2008 à 12:59:12
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed