Page 1 sur 1

[..] - Tester des liens internet ( liens brisés )

Posté : ven. 23 sept. 2011 20:06
par jordane45
Bonjour,

Après plusieurs recherches sur ce site (et ailleurs) je me permet de vous solliciter...

Je cherche à réaliser un script qui me permettrait de tester une liste de liens et détecter ceux qui seraient éventuellement "morts".

j'ai essayé de passer par du :

Code : Tout sélectionner

 Func _INetGetSource($s_URL, $bString = True)
    Local $sString = InetRead($s_URL, 1)
    Local $nError = @error, $nExtended = @extended
    If $bString Then $sString = BinaryToString($sString)
    Return SetError($nError, $nExtended, $sString)
EndFunc  
puis de chercher "not found" ou " error 404" mais le resultat ne me semble pas fiable... (une fois sur 3 il me retourne une valeur erronée.

Auriez-vous une idée/solution à me proposer ?
Quelque chose de fiable, rapide, qui gère le https comme le http...

Merci pour votre aide.

Re: [..] - Tester des liens internet ( liens brisés )

Posté : ven. 23 sept. 2011 21:40
par Tlem
Pouvez-vous donner un lien qui retourne une valeur erronée ?

Edit : Ceci semble fonctionner : http://www.autoitscript.com/forum/topic ... _p__915841

Re: [..] - Tester des liens internet ( liens brisés )

Posté : lun. 26 sept. 2011 14:08
par jordane45
Bonjour Tlem..
Merci de t'interresser à mon souci.

Pour ce qui est d'un exemple de lien... je dirais... n'importe lequel qui retournerai une erreur 404 .

Ce programme a pour but de tester tous les liens contenus dans mes faforis internet..

Je viens de regarder le sujet sur lequel tu me renvoies.. malheureusement ça ne semble pas fonctionner chez moi.

Code : Tout sélectionner

; En utilisant le script sous cette forme : 
    $oHttpRequest.SetTimeouts($ResolveTimeout, $ConnectTimeout, $SendTimeout, $ReceiveTimeout)
    $oHttpRequest.Open("GET", $sTestUrl)
    $oHttpRequest.Send
 
j'obtient l'erreur suivante :
==> The requested action with this object has failed.:
$oHttpRequest.Send
$oHttpRequest.Send^ ERROR
Sous l'autre forme, j'ai le même souci :

Code : Tout sélectionner

With $oHttpRequest
   .SetTimeouts ($ResolveTimeout, $ConnectTimeout, $SendTimeout, $ReceiveTimeout)
   .Open ("GET", $sTestUrl)
   .Send
.Send
.Send^ ERROR
J'ai regardé du côté des includes pour voir ce qui manquerait.. mais je ne trouve pas la réponse.

Une petite idée ?

Par avance merci.

Re: [..] - Tester des liens internet ( liens brisés )

Posté : lun. 26 sept. 2011 15:10
par PandiPanda
$oHttpRequest.Send() ?

ceci;

Code : Tout sélectionner

; En utilisant le script sous cette forme : 
    $oHttpRequest.SetTimeouts($ResolveTimeout, $ConnectTimeout, $SendTimeout, $ReceiveTimeout)
    $oHttpRequest.Open("GET", $sTestUrl)
    $oHttpRequest.Send[color=#FF0000]()[/color]

Re: [..] - Tester des liens internet ( liens brisés )

Posté : mar. 27 sept. 2011 08:48
par jordane45
bon.. y'a du mieux... mais ce n'est pas encore ça.. :-(
### COM Error ! Number: 80020009 ScriptLine: 53 Description:The operation timed out

Code : Tout sélectionner

 $oHttpRequest.Send()           ; ligne 53
J'ai modifié les variables de timeout pour voir.. mais je n'obtiens rien de plus :|

:?:
De votre côté est ce que ce script fonctionne ? ( avec comme URL à tester par exemple :
http://autoitscript.fr/forum/posting.ph ... f=3&t=8441 )

Si ça se trouve ça vient des parametres du proxy de ma boite....

Cordialement,
Jordane

Re: [..] - Tester des liens internet ( liens brisés )

Posté : mar. 27 sept. 2011 10:50
par Tlem
J'ai modifié la fonction pour les besoins.
Essayez ceci :

Code : Tout sélectionner

If _UploadTester("http://autoitscript.fr/forum/posting.php?mode=reply&f=3&t=8441") Then
    MsgBox(32, "Resultat", "L'adresse existe" & @TAB)
Else
    MsgBox(16, "Resultat", "L'adresse n'existe pas" & @TAB)
EndIf

Func _UploadTester($sTestUrl)
    $oHttpRequest = ""
    $oHttpRequest = ObjCreate("MSXML2.ServerXMLHTTP")
    $ResolveTimeout = 500
    $ConnectTimeout = 500
    $SendTimeout = 500
    $ReceiveTimeout = 500

    $oHttpRequest.SetTimeouts($ResolveTimeout, $ConnectTimeout, $SendTimeout, $ReceiveTimeout)
    $oHttpRequest.Open("GET", $sTestUrl)
    $oHttpRequest.Send

    If $oHttpRequest.Status = 404 Then  ; Err 404
        Return 0
    Else                                ; URL exist
        Return 1
    EndIf
EndFunc   ;==>_UploadTester

Re: [..] - Tester des liens internet ( liens brisés )

Posté : mar. 27 sept. 2011 14:30
par jordane45
Désolé mais cela ne fonctionne pas.
exemple avec une url qui n'existe pas : $url = "http://autoitscript.fr/forum/test/posting.php"
### COM Error ! Number: 80020009 ScriptLine: 112 Description:The operation timed out
### COM Error ! Number: 80020009 ScriptLine: 114 Description:Les données nécessaires pour terminer cette opération ne sont pas encore disponibles.
Pour lui ( le script) la réponse est toujours = 1

Est ce que de votre côté ça fonctionne ?
Si oui, je pense que le souci vient du proxy de ma boite, et dans ce cas je testerai de chez moi.

Re: [..] - Tester des liens internet ( liens brisés )

Posté : mar. 27 sept. 2011 16:58
par Tlem
Oui, je l'ai testé et il fonctionne pour moi !
Avez-vous la dernière version de AutoIt 3.3.6.1 ?