Ich habe eine sehr einfache Notwendigkeit - mein C# -Code muss eine Verbindung zu einem Remote-Server über HTTP herstellen und eine Zeichenfolge herunterladen. Eine triviale GET-Anfrage, mehr nicht.Wie lade ich eine Zeichenkette über HTTP von .NET 4.5 herunter?
Um sicherzustellen, dass meine Bewerbung Ich möchte auch ein Timeout verhängen (etwa 3 Sekunden) auf dem Betrieb als Reaktion bleibt.
Mein erster Gedanke war System.Net.WebClient
zu verwenden, aber das unterstützt keine Timeouts.
Dann wollte ich die gute alte System.Net.HttpWebRequest
versuchen, aber leider - seit .NET 4.5 ist es been marked as obsolete!
Also, was kann ich verwenden? Ich überprüfte den System.Net.Http
Namespace, aber es erlaubt nur asynchrone Nutzung, Kräfte Task
s zu verwenden, und in der Regel fügt nur ein Dutzend verschiedene Abstraktionsebenen, ohne wirklich eine neue Funktionalität hinzugefügt (da es verwendet die gleiche alte System.Net.HttpWebRequest
unter sowieso)
Ich möchte keine asynchronen Sachen, ich möchte keine anderen Threads einbeziehen, ich möchte nicht das Tasks-Framework einbeziehen, ich will nicht Tonnen von Wrappern.
Was ist der richtige Weg, dies .NET 4.5 in tun?
Es ist nicht der 'HttpWebRequest', der veraltet ist, es ist seine Konstruktoren. 'Verwenden Sie nicht den HttpWebRequest-Konstruktor. Verwenden Sie die WebRequest.Create Methode zur Initialisierung neue HttpWebRequest objects.' – GSerg
Sie noch WebClient Asynchron-Methoden verwenden, könnte ein Timeout zu setzen: http://stackoverflow.com/a/601899/54937 –
Und Sie können immer verschieben Anrufe 'WebClient' zu einem Hintergrundthread und verwende einen Semaphor irgendeiner Art (wie ein 'AutoResetEvent'), der ein Timeout hat. – Will