2012-09-21 21 views
7

Me gustaría utilizar HttpClient para leer el contenido fragmentado (en el sentido de HTTP 1.1 de codificación de transferencia fragmentada) de forma asíncrona.lectura asíncrona de contenido fragmentado con HttpClient de ASP.NET WebApi

estoy mirando HttpContent asíncrono métodos en: MSDN link

Sin embargo, en el caso de tareas devuelto para el conjunto de bytes, por ejemplo:

El regresó objeto Task completará después de todo el el contenido se ha escrito como una matriz de bytes

Estoy obteniendo contenido fragmentado precisamente porque el servidor no sabe de antemano cuándo estarán disponibles todos los datos, t hus No sé cuándo llegará todo el contenido. En lugar de esperar, posiblemente durante horas, para completar la tarea, me gustaría poder leer los fragmentos a medida que llegan.

¿Puedo de alguna manera leer parte del contenido de la respuesta, como tener alguna tarea que completaría cuando cada 4K bytes de contenido se reciban en respuesta?

¿El uso de HttpClient es ventajoso en este caso?

Respuesta

10

Usando HttpClient.SendAsync se puede pasar un parámetro para contar HttpCompletionOption HttpClient no para amortiguar la respuesta para usted y regresar tan pronto como se pone las cabeceras. Luego puede usar ReadAsStreamAsync para obtener una transmisión que le permitirá extraer los datos cuando lleguen.

+0

Parece prometedor. Gracias. Déjame probarlo antes de aceptarlo como una respuesta. – Tony

+0

Funcionó maravillosamente. Usé HttpSelfHostServer y me aseguré de que el contenido estuviera fragmentado. Podría seguir su llegada en pedazos en el lado del cliente. No era necesario analizar manualmente el contenido fragmentado: la transmisión ya se había eliminado en el sentido de codificación de transferencia, incluso si los datos estaban disponibles en fragmentos. – Tony

Cuestiones relacionadas