Comment tester si une page internet est active ?

bigtoof Messages postés 7 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 19 mai 2003 - 12 mai 2003 à 15:29
blinnit Messages postés 18 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 18 mars 2006 - 2 avril 2004 à 01:47
J'aimerais tester plusieurs pages web sur un intranet et avertir par mail un utilisateur si il y a une page qui ne répond pas (par exemple erreur 404).
- j'ai essayé le controle winsock mais je ne peux pas acceder aux pages intranet (erreur 401 : non autorisé)
alors je me demande si on peut passer des parametres comme login et mot de pass dans le string strCommand :

Const txtPageURL As String = "http://intranet.janf.fr/hello.html"
Const remoteHost As String = "intranet..janf.fr"

Private Sub Command1_Click()
     
    With WinSCK
        If .State <> sckClosed Then .Close
        .remoteHost = remoteHost
        .Protocol = sckTCPProtocol
        .RemotePort = 80
        .Connect
    End With
     
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If WinSCK.State <> sckClosed Then WinSCK.Close
End Sub

Private Sub WinSCK_Connect()
    Dim strCommand As String
    Dim strWebPage As String
     
    
     
  strWebPage = txtPageURL
    strCommand = "HEAD " + strWebPage + " HTTP/1.0" + vbCrLf
    strCommand = strCommand + vbCrLf
    WinSCK.SendData strCommand & vbCrLf
     
End Sub

Private Sub WinSCK_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    WinSCK.GetData strData, "", 26
    
    Text1.Text = strData
End Sub



- sinon existe il un autre moyen de les vérifier ?

merci d'avance :)

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mai 2003 à 15:41
Salut
Si ton serveur est un serveur Web, qu'il soit intranet ou www ne soit pas changer grand chose.
Je te conseille d'utiliser le control iNet
Projet, Composants, "Microsoft Internet Controls"

Ensuite, son utilisation est très simple :
Chaine = iNet1 (URL)
-- URL est l'adresse de la page à charger
-- Chaine est une String dans laquelle tu récupère le code de la page --> Facile de repérer l'erreur 404

Vala
Jack
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mai 2003 à 15:52
Correction (je suis allé trop vite)

Chaine = iNet1.OpenURL (URL)

re-vala
Jack
0
bigtoof Messages postés 7 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 19 mai 2003
12 mai 2003 à 16:03
Je viens d'essayer ton exemple mais je n'arrive pas à le faire fonctionner
Inet1(URL) ca ne fonctionne pas ??

<code>
Private Sub Command1_Click()
Dim Url As String
Url = "http://www.google.fr/index.html"
Dim chaine As String
chaine = Inet1(Url)
Text2.Text = chaine

End Sub
/code

j'ai l'erreur 451 lors de l'éxecution
la procédure Property Let n'est pas définie et la procédure Property Get n'a pas renvoyé d'objet.

Merci encore pour ton aide :)
0
bigtoof Messages postés 7 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 19 mai 2003
12 mai 2003 à 16:13
Merci beaucoup ta réponse :)
bonne journée .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mai 2003 à 18:32
Tu disais :
HTTP/1.1 404 Object Not Found
Server: Microsoft-IIS/5.0
Date: Mon, 12 May 2003 14:57:39 GMT
Connection: close
Content-Type: text/html
Content-Length: 4040

j'aimerais recuperer la valeur 404

-----------------------
Je n'ai jamais essayé la méthode GetHeader du iNet, mais tu dois pouvoir le tester facilement !

Pour rechercher une erreur :
Simple : Dans l'exemple Chaine = iNet1.OpenURL(URL), il te suffit de dépouiller la chaine récupérée :
Pour rechercher l'erreur 404 :

If Instr(1, Chaine, "404 Object Not Found") > 0 then
Beep ' La page est introuvable
End If

Vala
Jack

NB : Si tu as des questions, continue à les poser ici (plutôt que dans ma boîte aux lettres) pour que tout le monde en profite !!
0
bigtoof Messages postés 7 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 19 mai 2003
13 mai 2003 à 16:02
Me revoila j'ai un autre probleme

mon code :
Inet1.OpenURL ("www.google.fr")
chaine = Inet1.GetHeader
While Inet1.StillExecuting
 DoEvents
Wend
chaine1 = getHeaderCode(chaine)
Debug.Print chaine1

Inet1.RequestTimeout = 4
Inet1.OpenURL ("http://rarusraweb04.prius.jnj.com/gpt/")
chaine2 = Inet1.GetHeader
While Inet1.StillExecuting
    DoEvents
Wend
chaine3 = getHeaderCode(chaine2)
Debug.Print chaine3


la fonction getHeaderCode me retourne juste la valeur de la premiere ligne du header (200 si ok, 404 non trouvé ...)

Quand je fais
Inet1.OpenURL("http://rarusraweb04.prius.jnj.com/gpt/")
(c'est une page qui est sur mon intranet et qui provoque un timeout)

J'ai une erreur d'execution suivante :
35761 Délai écoulé pour la demande

J'aimerais intercepter cette erreur et donc indiqué qu'il y a une erreur de type 505

Sais tu comment faire ?
merci d'avance

;)
0
blinnit Messages postés 18 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 18 mars 2006
2 avril 2004 à 01:45
Moi je te conseil une methode plus simple, repere une phrase qui est tjr dans la page ke tu veux controler, et recherche dans la source pour voir si il y est bien...
Exemple :
[CODE]
Dim Source
Source = inet.OpenURL("http://www.google.com")
While inet.StillExecuting
DoEvents
Wend
If instr(1,Source,"<title>Google</title>") = 0 then 'par exemple
Debug.Print "Kaputt"
Else
Debug.Print "OK"
end if
0
blinnit Messages postés 18 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 18 mars 2006
2 avril 2004 à 01:47
humm foirer le post precedent mais c kd meme lisible...
0
Rejoignez-nous