Descargar el número de bytes de la fuente web
Estoy tratando de descargar varios bytes de la fuente web usandoHttpWebRequest
(puede ser de otra manera: he probado WebRequest, HttpClient ...) en Windows Phone 8.1 Runtime - código completo:
private async void Download1000_Click(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Download Started");
HttpWebRequest longRequest = (HttpWebRequest)WebRequest.Create(new Uri(@"http://s3.amazonaws.com/dnr/dotnetrocks_0986_enterprise_sharepoint.mp3"));
longRequest.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString(); // prevent caching the whole file
longRequest.AllowReadStreamBuffering = false;
using (WebResponse myResponse = await longRequest.GetResponseAsync())
using (Stream myStream = myResponse.GetResponseStream())
{
int bytesRead = 0;
byte[] myBuffer = new byte[1000];
Stopwatch newWatch = new Stopwatch();
newWatch.Start();
while ((bytesRead = await myStream.ReadAsync(myBuffer, 0, 1000)) > 0)
Debug.WriteLine(bytesRead.ToString() + " bytes read. Elapsed time: " + newWatch.Elapsed.TotalSeconds.ToString("0.000000") + " seconds");
}
Debug.WriteLine("Download Finished");
}
El problema - el código funciona, pero el sistema operativo impide de alguna manera leer una pequeña cantidad de bytes (incluso he desactivadoAllowReadStreamBuffering
): parece que descarga todo el archivo en algún caché (?) y luego ejecuta elwhile loop
. Se parece a esto:
Como puede ver, la primera cantidad de bytes aparece después de 22 segundos, el archivo se descargó completo. Al contrario, cuando agrego el mismo código (copiar y pegar) en Windows Phone 8.1 Silverligh y lo ejecuto en el mismo dispositivo, se ejecuta como debería:
¿Hay algún método para descargar el número de bytes en WP8.1 Runtime, sin descargar primero todo el archivo?