Windows Phone: Отменете HttpWebRequest и вземете данни

Използвам HttpWebRequest в C# за Windows Phone 8, за да изтегля файл от отдалечен сървър. Заявката се анулира след определено време с помощта на таймаут, който извиква HttpWebRequest.Abort().

Това работи добре, но бих искал да получа достъп до данните, които вече са изтеглени, включително заглавките, изпратени от сървъра, дори ако изтеглянето (заявката) все още не е завършено:

HttpWebRequest  _request =  (HttpWebRequest)WebRequest.Create("http://urltofile.zip");
_request.Method = "GET";

_timeout.Start(); // a timer which calls _request.Abort() after a certain time
request.BeginGetResponse(new AsyncCallback(HandleResultAsync), _request);



public void HandleResultAsync(IAsyncResult result)
{
    HttpWebRequest request = (HttpWebRequest)result.AsyncState;

    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); // exception is raised here when "_request.Abort()" is called from the timer
}

Когато "HttpWebRequest.Abort()" се извика от таймера, тогава се извиква методът "HandleResultAsync". Но достъпът до „request.EndGetResponse()“ за получаване на вече изтегления хедър и частично съдържание е неуспешен, защото отговорът вече е приключил.

Как мога да получа достъп до евентуално изтеглената заглавка и частично съдържание?

За разбирането,


person Hyndrix    schedule 17.05.2013    source източник


Отговори (1)


Намерих решение: трябва да изключите буферирането за HttpWebRequest и след това е възможно просто да отмените изтеглянето, докато четете части от данни в рамките на метода „HandleResultAsync“ от първоначалния ми пост:

_request.AllowReadStreamBuffering = false;
person Hyndrix    schedule 18.05.2013