Frage zu HttpRequest

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Drahuverar.

    Frage zu HttpRequest

    Hallo Leute,

    zur Veranschaulichung mal folgendes Beispiel, hierfür benötigt ihr eine Windows-Form mit Button1 und Label1:

    VB.NET-Quellcode

    1. ​Imports System.Net
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Label1.Text = "Überprüfe..."
    5. Button1.Enabled = False
    6. Dim request = DirectCast(WebRequest.Create("http://download.piriform.com/ccsetup521.exe"), WebRequest)
    7. Try
    8. Dim response As WebResponse = DirectCast(request.GetResponse(), WebResponse)
    9. Label1.Text = "Datei existiert."
    10. Catch ex As WebException
    11. Dim response As WebResponse = DirectCast(ex.Response, WebResponse)
    12. Label1.Text = "Datei existiert nicht."
    13. MessageBox.Show(ex.ToString)
    14. End Try
    15. Button1.Enabled = True
    16. End Sub
    17. End Class


    Folgendes Problem;
    Wenn ich nun den Button 3 Mal drücke friert das Programm ein und liefert ein TimeOut und ich weiß momentan nicht weswegen.
    Sinn und Zweck des ganzen ist, dass ich mit dem Programm überprüfen möchte, ob eine neue Version bei einem Programm vorhanden ist (der CCleaner ist hier lediglich als Beispiel hinterlegt).

    Weiß einer warum ich ein TimeOut (erst beim 3. mal) erhalte ?
    Vielleicht gibt es ja auch eine elegantere Lösung als das Try Catch.. :whistling:

    Grüße,
    Drahuverar
    Option Strict On!
    @Drahuverar WebResponse ist ein IDisposable, das musst Du nach Verwendung disposen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Label1.Text = "Überprüfe..."
    5. Button1.Enabled = False
    6. Dim response As WebResponse = Nothing
    7. Try
    8. Dim request = DirectCast(WebRequest.Create("http://download.piriform.com/ccsetup521.exe"), WebRequest)
    9. response = DirectCast(request.GetResponse(), WebResponse)
    10. Label1.Text = "Datei existiert."
    11. Catch ex As WebException
    12. 'Dim response As WebResponse = DirectCast(ex.Response, WebResponse)
    13. Label1.Text = "Datei existiert nicht."
    14. MessageBox.Show(ex.ToString)
    15. Finally
    16. If response IsNot Nothing Then
    17. response.Dispose()
    18. End If
    19. End Try
    20. Button1.Enabled = True
    21. End Sub
    22. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Drahuverar IDisposable ist das Interface, auf das Using aufsetzt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany nutze es täglich, aber so ganz genau wusste ich auch nicht wie das geschieht, bzw. was im Hintergrund passiert. Habe bisher auch selten "disposen" müssen. Man lernt nie aus.
    Und hier steht's auch- habe mir das Statement nie angeschaut.. Ups. :whistling:
    Option Strict On!