none
webbrowser - detection d'erreurs http type 503, 504... RRS feed

  • Question

  • Bonjour,

    j'utilise un webbrowser  en vb.net qui navigue automatiquement sur differents sites (en mon absence). Je souhaite que mon programme puisse réagir en conséquence à des erreurs http du style 503 ou 504. Comment puis-je détecter ces erreurs .

    Merci d'avance

    jeudi 25 juillet 2013 12:44

Réponses

  • Bonjour mag2013,

    En testant les réponses à des WebRequest tu peux comparer aux Codes HTTP :

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim Status As String
    
            Status = TestUrl(Me.TextBox1.Text)
    
            If Status = "200" Then
                Me.WebBrowser1.Navigate(Me.TextBox1.Text)
            Else
                MessageBox.Show(Status)
            End If
        End Sub
    
        Private Function TestUrl(s As String) As String
            Label1.Text = "Test : " & s
            Label1.Refresh()
            Cursor = Cursors.WaitCursor
            Application.DoEvents()
            Dim httpReq As HttpWebRequest = CType(WebRequest.Create(s), HttpWebRequest)
            httpReq.AllowAutoRedirect = False
            Try
                Dim httpRes As HttpWebResponse = CType(httpReq.GetResponse(), HttpWebResponse)
                TestUrl = httpRes.StatusCode
                httpRes.Close()
            Catch ex As WebException
                TestUrl = "Erreur : " & ex.Message
            End Try
            Label1.Text = ""
            Cursor = Cursors.Default
            Application.DoEvents()
        End Function

    A adapter à tes besoins.


    Cordialement, Jacques

    • Proposé comme réponse Aurel Bera vendredi 26 juillet 2013 10:59
    • Marqué comme réponse mag2013 vendredi 26 juillet 2013 15:02
    jeudi 25 juillet 2013 15:30

Toutes les réponses

  • Bonjour mag2013,

    En testant les réponses à des WebRequest tu peux comparer aux Codes HTTP :

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim Status As String
    
            Status = TestUrl(Me.TextBox1.Text)
    
            If Status = "200" Then
                Me.WebBrowser1.Navigate(Me.TextBox1.Text)
            Else
                MessageBox.Show(Status)
            End If
        End Sub
    
        Private Function TestUrl(s As String) As String
            Label1.Text = "Test : " & s
            Label1.Refresh()
            Cursor = Cursors.WaitCursor
            Application.DoEvents()
            Dim httpReq As HttpWebRequest = CType(WebRequest.Create(s), HttpWebRequest)
            httpReq.AllowAutoRedirect = False
            Try
                Dim httpRes As HttpWebResponse = CType(httpReq.GetResponse(), HttpWebResponse)
                TestUrl = httpRes.StatusCode
                httpRes.Close()
            Catch ex As WebException
                TestUrl = "Erreur : " & ex.Message
            End Try
            Label1.Text = ""
            Cursor = Cursors.Default
            Application.DoEvents()
        End Function

    A adapter à tes besoins.


    Cordialement, Jacques

    • Proposé comme réponse Aurel Bera vendredi 26 juillet 2013 10:59
    • Marqué comme réponse mag2013 vendredi 26 juillet 2013 15:02
    jeudi 25 juillet 2013 15:30
  • Merci beaucoup pour ta réponse,

    J'avoue que j'espérais quelque-chose d'un peu plus immédiat du style une petite info planquée dans la propriété URL de WebbrowserNavigatedEventargs.... mais fallait pas trop rêver ^^.

    Je vais donc tenter d'utiliser la solution que tu me proposes.

    Merci encore

    vendredi 26 juillet 2013 15:02
  • La RFC 2616 , qui régit le protocole HTTP, indique bien que ces codes, surtout les 5xx, ne sont pas définitifs = si le 501(Not Implemented) va être constant dans le temps, le 503 (Service UnAvailable) peut basculer assez rapidement,il n'y a donc pas vraiment garanti d'avoir toujours le même réponse à une requête donnée.

    A noter que tous les protocoles Internet ; HTTP, mais aussi FTP, TELNET, SMTP, etc. sont régis par ce type de codes, via leur RFC respective , mais cela est rendu transparent par des logiciel tels que navigateurs Web, client FTP, courrielleur  etc.


    Cordialement, Jacques

    vendredi 26 juillet 2013 17:53
  • Merci pour la précision.

    J'ignorais totalement ce point, mais je ne suis qu'un simple "bidouilleur de code autodidacte" on ne joue donc pas dans la même division ^^

    samedi 27 juillet 2013 04:10