Fonction pour tester une URL HTTP/FTP.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Barthandelus
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mer. 02 janv. 2019 14:34
Status : Hors ligne

Fonction pour tester une URL HTTP/FTP.

#1

Message par Barthandelus » ven. 08 mars 2019 12:24

Bonjour,

J'ai besoin de tester des URL précises et de voir s'il y a une réponse. Pour ça, j'utilise une fonction que j'ai trouvée en ligne, voir ci-dessous :

Func __checkConn($url)
    Return (StringLen(InetRead($url, 1)) > 0)
EndFunc

Cette fonction marche super bien lorsqu'il s'agit de tester des URL en HTTP. Cependant, elle ne fonctionne pas si je lui fournis en argument quelque chose du genre $url = "ftp://user:pass@host/home/www/", et je ne vois pas comment transformer cette fonction pour l'adapter à mon besoin. Pourtant, InetRead() est sensé fonctionner avec le protocole FTP selon la documentation.

A noter que de tester un dossier vide en HTTP fonctionne bien, mais pas lorsque le protocole utilisé est FTP. Tester l'URL FTP via le navigateur fonctionne bien, via un copier/coller de mon code.

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 639
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: Fonction pour tester une URL HTTP/FTP.  

#2

Message par walkson » ven. 08 mars 2019 19:13

Bonjour,
Il y a peut être plus simple ?
#include <FTPEx.au3>

    Local $sServer = 'ftpperso.free.fr'
    Local $sUsername = 'monNom'
    Local $sPass = 'mdp'
        $url = "http://ftpperso.free.fr/index.pl"

MsgBox(0,"",__checkConn($url, $sServer , $sUsername , $sPass ))
MsgBox(0,"",__checkConn("ftp://svr-ftp.eng.cam.ac.uk", 'ftp.csx.cam.ac.uk' ))
MsgBox(0,"",__checkConn("https://svn.filezilla-project.org/filezilla/FileZilla3/" ))

Func __checkConn($url, $sServer = "", $sUsername = "", $sPass = "")
    If $sServer = ""  Then Return (StringLen(InetRead($url, 1)) > 0 )
        Local $Err, $sFTP_Message
    Local $hOpen = _FTP_Open('MyFTP Control')
    Local $hConn = _FTP_Connect($hOpen, $sServer, $sUsername, $sPass)
    If @error Then
        Return False
    Else
        _FTP_GetLastResponseInfo($Err, $sFTP_Message)
                If $Err = 0 Then Return True
    EndIf
    Local $iFtpc = _FTP_Close($hConn)
    Local $iFtpo = _FTP_Close($hOpen)
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
Barthandelus
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mer. 02 janv. 2019 14:34
Status : Hors ligne

Re: Fonction pour tester une URL HTTP/FTP.

#3

Message par Barthandelus » lun. 11 mars 2019 10:47

Tout fonctionne avec cette fonction !

Je pensais faire dans la simplicité en voyant la documentation de InetRead(), mais cette solution me convient.

Par hasard, pourquoi mets-tu dans ta fonction les retours de _FTP_Close() dans des variables en local ?

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 639
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: Fonction pour tester une URL HTTP/FTP.

#4

Message par walkson » lun. 11 mars 2019 12:48

Bonjour,
pourquoi mets-tu dans ta fonction les retours de _FTP_Close() dans des variables en local ?
Parce que j'ai recopié l'aide sur FTP :mrgreen:
Plus sérieusement, _FTP_Close() ferme _FTP_Open() et _FTP_Connect() qui sont dans la fonction. Nous sommes bien en local. Mais un simple _FTP_Close($hConn) ou _FTP_Close($hOpen) pouvait suffir
Si _FTP_Open() et _FTP_Connect() étaient utilisés ailleurs, il faudrait déclarer les variables en global mais dans le début du code et en dehors d'une fonction.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
Barthandelus
Niveau 3
Niveau 3
Messages : 30
Enregistré le : mer. 02 janv. 2019 14:34
Status : Hors ligne

Re: Fonction pour tester une URL HTTP/FTP.

#5

Message par Barthandelus » lun. 11 mars 2019 13:07

Je comprends !

Tout est bon pour moi. Problème résolu, merci !

Répondre