Я пытаюсь сделать несколько последовательных HttpWebRequest в WP7. Каждый из них использует информацию (идентификатор из файла cookie, адрес URL для перенаправления, немного HTML ...) из предыдущего, поэтому нам нужно «дождаться», пока предыдущий не закончится, прежде чем продолжить.
В Android мы создаем новый поток, а затем вы идете последовательно с несколькими Synchronous HttpPost или HttpGet, но здесь это отличается из-за асинхронной природы Silverlight.
Что у меня сейчас есть, так это в моем классе помощника (создан в потоке пользовательского интерфейса):
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(theUrl);
request.Method = "POST";
try
{
IAsyncResult ias = request.BeginGetResponse(new AsyncCallback(getCookiesStatus), request);
}
catch (Exception e)
{
Console.Write("ERROR" + e.Message);
}
getCookieStatus:
private void getCookiesStatus(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
ccCookies = response.Cookies;
HttpStatusCode sc = response.StatusCode;
if (sc == HttpStatusCode.Found)
{
location = response.Headers["Location"];
}
}
Как лучше всего использовать эту строку "location", которую мы получили, чтобы сделать еще один последовательный http-запрос без цепочки вызовов от функции к функции? Есть ли какой-нибудь способ поднять "waker" (событие?) В потоке пользовательского интерфейса после IAsyncResult?