Próbuję użyć klas .NET WebRequest/WebResponse, aby uzyskać dostęp do interfejsu API przesyłania strumieniowego na Twitterze tutaj "http://stream.twitter.com/spritzer.json"
.Odczytywanie danych z otwartego strumienia HTTP
Muszę mieć możliwość otwierania połączenia i odczytu danych przyrostowo z otwartego połączenia.
Obecnie, gdy wywołuję metodę WebRequest.GetResponse
, blokuje ona do momentu pobrania całej odpowiedzi. Wiem, że istnieje metoda BeginGetResponse
, ale zrobi to samo na wątku tła. Muszę uzyskać dostęp do strumienia odpowiedzi, gdy pobieranie nadal trwa. Po prostu nie wydaje mi się to możliwe z tymi klasami.
Jest specyficzny komentarz na ten temat w dokumentacji Twitterze:
„Należy pamiętać, że niektóre biblioteki klienta HTTP tylko zwrócić treść odpowiedzi po połączenie zostało zamknięte przez serwer Tych klientów nie będzie działać dostępu. Interfejs API do przesyłania strumieniowego Należy użyć klienta HTTP, który będzie zwracał dane odpowiedzi stopniowo, na przykład większość odpornych bibliotek klienckich HTTP będzie zapewniać tę funkcjonalność, na przykład Apache HttpClient obsłuży ten przypadek użycia. "
Wskazują one na HttpClient Appache, ale to niewiele pomoże, ponieważ muszę używać .NET.
Wszelkie pomysły, czy jest to możliwe z WebRequest/WebResponse
, czy też muszę przejść do niższych klas sieciowych? Może są inne biblioteki, które pozwolą mi to zrobić?
Thx Allen
nie mogę używać WebRequest.BeginGetRequestStream bo nie próbuję zapisywać danych asynchronicznie na serwerze. Również w twoim przykładzie dzwonisz do GetResponse. Właśnie w tym momencie WebRequest blokuje się podczas pobierania odpowiedzi serwera. Ale połączenie nigdy się nie zamyka, ponieważ jest to nieskończony strumień danych. – user108687