Asynchrone Webrequest-Best Practices

8

Was ist die beste Vorgehensweise, um eine Webanfrage asynchron zu erhalten?

Ich möchte eine Seite aus dem Internet herunterladen (egal was) und vermeiden Sie, einen Thread so gut wie möglich zu blockieren.

Früher glaubte ich, dass es genügt, nur das Paar "BeginGetResponse" und "EndGetResponse" zu verwenden. Aber bei näherer Betrachtung sehe ich auch, dass es die Möglichkeit gibt, 'BeginGetRequestStream' zu verwenden.

[UPDATE] GetRequestStream wird für POST-Vorgänge verwendet

Und dann, um die Verwirrung hinzuzufügen, sollte ich stream.BeginRead und EndRead verwenden?

[UPDATE] Dieser Artikel schlägt vor, dass es noch besser ist, die HttpResponse zu verarbeiten .GetResponseStream asynchron mit Stream.BeginRead

Was für ein Durcheinander!

Kann mir jemand in die richtige Richtung zeigen?

Was ist die beste Praxis?

    
Andrew Harry 23.02.2009, 03:23
quelle

4 Antworten

5

Sie könnten das alles selbst programmieren oder Sie könnten einfach den WebClient verwenden, der eine Menge Arbeit für Sie erledigt. Um beispielsweise eine Datei als Zeichenfolge herunterzuladen, rufen Sie DownloadStringAsync () auf, wodurch schließlich das OnDowloadStringCompleted-Ereignis ausgelöst wird. Wenn die Datei binär ist, können Sie stattdessen versuchen, DownloadDataAsync () zu verwenden.

    
chuckj 24.02.2009 08:22
quelle
1

Der folgende Artikel scheint ein gutes Tutorial zur Verwendung von HttpWebRequest asynchron mit Threads zu haben:

Ссылка

    
Ben Blank 23.02.2009 04:00
quelle
0
  1. Sie verwenden Begin / EndGetResponse, um asynchron auf die HTTP-Antwort zu warten. Wenn Sie einen POST ausführen und viele Daten asynchron senden müssen, verwenden Sie Begin / EndGetRequestStream.

  2. Dies ist nicht auf asynchrone Kommunikation beschränkt - Sie können die synchronen Versionen nachsehen, um zusätzliche Informationen zu erhalten.

  3. Ich bin mir nicht sicher, warum Sie im Request-Stream eine Read-Funktion ausführen - wahrscheinlich schreiben Sie dazu und lesen aus dem Response-Stream.

Schließlich Jeffrey Richters Blog hat einen Artikel über einige der Feinheiten von HttpWebRequest und Streams .

    
mbeckish 23.02.2009 04:17
quelle
0

Haben Sie in Betracht gezogen, die Webanfrage in einem neuen Thread auszuführen?

Ссылка

    
JeremyWeir 24.02.2009 07:06
quelle