Ich versuche, die .NET WebRequest/WebResponse-Klassen zu verwenden, um auf die Twitter-Streaming-API hier "http://stream.twitter.com/spritzer.json"
zuzugreifen.Lesen von Daten aus einem offenen HTTP-Stream
Ich muss in der Lage sein, die Verbindung zu öffnen und Daten inkrementell von der offenen Verbindung zu lesen.
Derzeit, wenn ich WebRequest.GetResponse
Methode aufrufen, blockiert es, bis die gesamte Antwort heruntergeladen wird. Ich weiß, dass es eine BeginGetResponse
Methode gibt, aber das wird nur die gleiche Sache auf einem Hintergrundthread tun. Ich muss Zugriff auf den Antwortstream erhalten, während der Download noch stattfindet. Das scheint mir mit diesen Klassen nicht möglich zu sein.
Es gibt einen bestimmten Kommentar dazu in der Twitter-Dokumentation:
„Bitte beachten Sie, dass einige HTTP-Client-Bibliotheken nur die Antwort Körper zurückkehren, nachdem die Verbindung vom Server geschlossen wurde Diese Clients funktionieren nicht für den Zugriff. Die Streaming-API. Sie müssen einen HTTP-Client verwenden, der Antwortdaten inkrementell zurückgibt. Die meisten robusten HTTP-Clientbibliotheken bieten diese Funktionalität. Der Apache HttpClient wird beispielsweise diesen Anwendungsfall behandeln. "
Sie verweisen auf den Appache HttpClient, aber das hilft nicht viel, weil ich .NET verwenden muss.
Irgendwelche Ideen, ob dies mit WebRequest/WebResponse
möglich ist, oder muss ich für niedrigere Netzwerkklassen gehen? Vielleicht gibt es andere Bibliotheken, die mir erlauben, dies zu tun?
Thx Alle
Ich kann nicht WebRequest.BeginGetRequestStream weil ich Ich versuche nicht, Daten asynchron zum Server zu schreiben. In Ihrem Beispiel rufen Sie GetResponse auf. An diesem Punkt blockiert die WebRequest, während sie die Serverantwort herunterlädt. Die Verbindung wird jedoch nie geschlossen, da es sich um einen praktisch endlosen Datenstrom handelt. – user108687