[R] InetGet retourne mauvaise valeur?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

[R] InetGet retourne mauvaise valeur?

#1

Message par Pollux »

Bonsoir,

Je travaille en ce moment sur un sous-programme d'updater pour un autre de mes programmes.
La fonction InetGet étant essentielle, je la teste exhaustivement pour vérifier que tout marche impec.

Code : Tout sélectionner

$Telechargeable = InetGet("http://xxxxxx.com/yyyyyy/fichier.ini", @ScriptDir&"\fichier.ini", 1, 0)
If $Telechargeable = 0 Then
MsgBox(1,"Erreur","Une erreur s'est produite. Réessayez plus tard.",6)
Exit
EndIf
J'ai prit soin de retirer du serveur le "fichier.ini" donc le programme ne devrait pas le trouver et renvoyer 0, et par conséquent afficher le message d'erreur et sortir du programme. Le souci c'est que l'InetGet me renvoie toujours 1 (que le fichier soit là ou non), et donc le programme continue son exécution comme si le fichier avait été trouvé, chose que je veux à tout prix éviter.

Cela doit être un truc tout bête, mais impossible de mettre la main dessus.


Merci d'avance,

Pollux
Modifié en dernier par Pollux le lun. 10 août 2009 17:49, modifié 1 fois.
Image
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] InetGet retourne mauvaise valeur?

#2

Message par jbnh »

Cela est étrange, je n'ai pas ce problème.

Vérifiez bien que le fichier n'existe pas sur votre ftp
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: [..] InetGet retourne mauvaise valeur?

#3

Message par jumby »

Avez-vous modifié sensiblement l'url renseigné auprès d'inetget ou avez-vous supprimé votre fichier depuis votre ftp ?
Il peut arriver qu'en supprimant un seul caractère du nom du fichier à télécharger, le téléchargement s'effectue malgré tout.

Votre code plus haut est correct, vous pouviez aussi tester ceci :
@InetGetBytesRead = the number of bytes downloaded, or -1 if there has been an error.

Code : Tout sélectionner

$Telechargeable = InetGet("http://xxxxxx.com/yyyyyy/fichier.ini", @ScriptDir&"\fichier.ini", 1, 0)
If @InetGetBytesRead = -1 Then
MsgBox(1,"Erreur","Une erreur s'est produite. Réessayez plus tard.",6)
Exit
EndIf
Avatar du membre
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

Re: [..] InetGet retourne mauvaise valeur?

#4

Message par Pollux »

Rebonsoir,

Je viens d'en découvrir un peu plus.
Lorsque le "fichier.ini" est introuvable, le script télécharge quand même un pseudo "fichier.ini" qui contient un code source de page web : Celui où l'on est redirigé si le fichier n'est pas trouvé! Quelque part c'est logique car, si je ne me trompe pas, c'est en fait une pseudo fenetre internet explorer cachée qui s'ouvre, et donc elle agit comme telle.
Du coup, je suis redirigé vers http://www.xxxxx.com/404.jsp et le contenu source de cette page est copié dans le ce pseudo "fichier.ini" que le script télécharge à mon insu.
Je vois bien un moyen de corriger le souci en forcant à lire la première ligne du "fichier.ini" pour savoir si oui ou non il s'agit du "vrai" fichier.ini mais bon.

J'opterai pour cette solution si jamais il n'y a pas d'autre solution...

Pollux
Image
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] InetGet retourne mauvaise valeur?

#5

Message par Iste »

Oui en effet, c'est logique
En essayant de lire l'ini tu t'en serais rendu compte tout de suite
Sinon, deux solution :
avant de DL tu vérifit que la size du fichier n'est pas celle de la page 404 -> InetGetSize()
Apres le DL tu vérifit que le fichier ne soit pas la page 404
Signez ici
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] InetGet retourne mauvaise valeur?

#6

Message par timmalos »

Je viens de toucher un peu aujourd'hui à InetGet et il faut faire attention avec la version bêta d'autoit, vous pouvez miantenant utilisé InetRead qui va directement lire le fichier sans devoir l'ouvrir après comme on faisait avant. C'est assez pratique et ca vous permet, grace à un StringLeft(..., 10) de tester si les 10 premiers caracteres sont bien ceux du fichier que vous souhaitez.
Avatar du membre
Pollux
Niveau 2
Niveau 2
Messages : 19
Enregistré le : lun. 10 nov. 2008 05:09
Status : Hors ligne

Re: [R] InetGet retourne mauvaise valeur?

#7

Message par Pollux »

Vu que la redirection dépend des hébergeurs, je vais opter pour la lecture du fichier. C'est quelques lignes en plus mais au moins ça marche.

Merci pour vos réponses ! Je passe en [R]ésolu.


Pollux
Image
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] InetGet retourne mauvaise valeur?

#8

Message par Iste »

Tu peux aussi placer une métadonnée dans l'ini, genre "~#YES,I'M THE INI#~" Puis avec un simple

Code : Tout sélectionner

If StringInStr ("~#YES,I'M THE INI#~",_INetGetSource("url")) Then
t'as la réponse. Tu peux aussi opter pour HTTPRequest(), voir ici
Signez ici
Répondre