Timeout beim HTTP-Request

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von SAR-71.

    Timeout beim HTTP-Request

    Moin,

    ich hab ein kleines Problem mit dem HTTP-Request.

    VB.NET-Quellcode

    1. Dim str As New System.Text.StringBuilder
    2. Dim httpRequest As HttpWebRequest = HttpWebRequest.Create(Url)
    3. httpRequest.Timeout = 4000
    4. Dim httpResponse As HttpWebResponse = httpRequest.GetResponse()
    5. Dim reader As StreamReader = New StreamReader(httpResponse.GetResponseStream, System.Text.Encoding.Default)
    6. Do Until reader.EndOfStream
    7. str.AppendLine(reader.ReadLine)
    8. Loop


    Ansich eine einfache Funktion. Funktioniert auch alles.
    Zwischendurch passiert es jedoch, dass er bei Zeile 6 hängen bleibt. Und mit "Hängen bleiben" meine ich, dass er sehr lange Zeit nichts macht. Rekord lag bei etwa 5 Minuten. (Bis er ne Exception wirft)
    Das sowas passiert wollte ich mit dem Timeout verhindern - leider hilft der nicht. (Sind auch unterschiedliche Hosts)

    Wenn eine Exception kommt, dann verbindet er sich automatisch neu und es läuft alles so wie es soll.


    Was kann ich nun gegen die ewig lange Wartezeit machen?
    Ein zweiter Thread mit nem Timer finde ich zu übertrieben.


    Mfg.
    SAR
    Habe meinen Code um zwei Zeilen erweitert und seitdem konnte ich diesen Fehler nicht mehr beobachten.

    VB.NET-Quellcode

    1. Dim str As New System.Text.StringBuilder
    2. Dim httpRequest As HttpWebRequest = HttpWebRequest.Create(Url)
    3. httpRequest.Timeout = 4000
    4. httpRequest.ReadWriteTimeout = 4000
    5. Dim httpResponse As HttpWebResponse = httpRequest.GetResponse()
    6. Dim reader As StreamReader = New StreamReader(httpResponse.GetResponseStream, System.Text.Encoding.Default)
    7. Do Until reader.EndOfStream
    8. str.AppendLine(reader.ReadLine)
    9. Loop
    10. httpRequest.Close()


    Die 5 und letzte Zeile kamen dazu.
    Falls das Problem wieder auftritt melde ich mich hier. ^^


    Mfg.
    SAR