Webrequest über Proxy - Verbindung schließen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von super95.

    Webrequest über Proxy - Verbindung schließen

    Hallo zusammen,

    ich habe eine Textdatei in der sich im Format ip:port einige Proxies befinden und möchte prüfen ob diese funktionieren. Dazu habe ich ein Programm, das Zeile für Zeile mit dem jeweiligen Proxy ein Webrequest(siehe unten) ausführt und die Antwort dann auswertet. Prinzipiell funktioniert das auch alles.

    Das Problem ist, dass nur die ersten 6 Proxies in der Liste getestet werden. Danach geht nix mehr. Wenn ich das Programm schließe und wieder starte geht es wieder. Nun ist es so, dass der Anbieter der Proxies maximal 6 gleichzeitige Verbindungen zulässt. Dass das 7. request nicht funktioniert liegt also offenbar daran dass die vorherigen Verbindungen noch irgendwie offen sind oder so?? Ich verstehe das nicht ganz, dachte mit .close (oder .dispose) wäre das Request "beendet"?

    Wie kriege ich das also hin, dass alle Proxies getestet werden?

    VB.NET-Quellcode

    1. Function requesten(prox As String)
    2. Dim myProxy As New WebProxy(prox)
    3. myProxy.Credentials = New System.Net.NetworkCredential("USER", "PASS")
    4. Dim Request As HttpWebRequest = CType(HttpWebRequest.Create("www.beispiel.de"), HttpWebRequest)
    5. Request.Proxy = myProxy
    6. Request.Method = "GET"
    7. Request.ContentType = "application/x-www-form-urlencoded"
    8. Request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36"
    9. Request.KeepAlive = False
    10. Dim Response As HttpWebResponse = Request.GetResponse()
    11. Dim DataStream As Stream = Response.GetResponseStream()
    12. Dim reader As New StreamReader(DataStream)
    13. Dim ServerResponse As String = reader.ReadToEnd()
    14. reader.Close()
    15. DataStream.Close()
    16. Response.Close()
    17. Response.Dispose()
    18. DataStream.Dispose()
    19. reader.Dispose()
    20. Request.Abort()
    21. Return ServerResponse
    22. End Function
    Heyho,

    ich würde Pauschal erstmal empfehlen Option Strict auf On zu setzten das hast du wahrscheinlich nicht denn sonst würde
    dein Visual Studio da meckern wegen deiner Funktion die keine As-Klausel hat z.b.

    Dann würde ich mal versuchen erstmal den Timeout runter zu setzten weil der ist Standard auf 100 Sekunden. Evtl. sind da villt auch Proxy´s noch nicht fertig.

    Aber mach erstmal Option Strict On. siehe: Visual Studio - Empfohlene Einstellungen
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Hab ich beides gemacht.
    Bekomme jetzt:

    VB.NET-Quellcode

    1. System.Net.WebException: "Timeout für Vorgang überschritten"
    oder, wenn ich das Timeout höher setze, nach wie vor

    VB.NET-Quellcode

    1. System.Net.WebException: "Der Remoteserver hat einen Fehler zurückgegeben: (407) Proxyauthentifizierung erforderlich."