2012-09-21 17 views
7

Chciałbym użyć HttpClient do asynchronicznego odczytywania zawartości fragmentowanej (w rozumieniu HTTP 1.1 chunked transfer kodowania).Asynchroniczne odczytywanie zawartości fragmentów za pomocą HttpClient z ASP.NET WebApi

Patrzę na HttpContent asynchronicznych metod na: MSDN link

Jednak w przypadku zwracany zadanie dla tablicy bajtów, na przykład:

Zwracany obiekt Zadanie zakończy po wykonaniu treść została napisana jako tablica bajtów

Dostaję masę treści dokładnie dlatego, że serwer nie wie z góry, kiedy wszystkie dane będą dostępne, t hus Nie wiem kiedy nadejdzie cała treść. Zamiast czekać, być może godzinami, aby zadanie zostało ukończone, chciałbym móc czytać kawałki po ich przybyciu.

Czy mogę w jakiś sposób odczytać część treści odpowiedzi, np. Czy ma jakieś zadanie, które zakończyłoby się, gdy co 4K bajtów treści zostanie odebranych w odpowiedzi?

Czy w tym przypadku korzystasz w ogóle z HttpClient?

Odpowiedz

10

Za pomocą HttpClient.SendAsync można przekazać parametr HttpCompletionOption, aby poinformować, że HttpClient nie buforuje odpowiedzi i zwraca ją, gdy tylko uzyska nagłówek. Następnie możesz użyć ReadAsStreamAsync, aby uzyskać strumień, który pozwoli ci pobierać dane po ich nadejściu.

+0

Wygląda obiecująco. Dzięki. Pozwól, że spróbuję, zanim przyjmuję to jako odpowiedź. – Tony

+0

Pięknie pracował. Użyłem HttpSelfHostServer i upewniłem się, że zawartość została porwana. Mogłem śledzić jego przybycie w kawałkach po stronie klienta. Nie było potrzeby ręcznego analizowania porwanej zawartości - strumień był już zdekompresowany w sensie kodowania transferu, nawet jeśli dane były dostępne w porcjach. – Tony

Powiązane problemy