Есть у меня обычный метод, для получения содержимого страниц GET методов. При необходимости - с использованием кук
public static string Get(string url, bool clearCookie, ref CookieContainer container)
{
string output = null;
try
{
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
if (clearCookie) WebReq.CookieContainer = new CookieContainer();
else WebReq.CookieContainer = container;
WebReq.Method = "GET";
WebReq.AllowAutoRedirect = true;
WebReq.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
Stream Answer = WebResp.GetResponseStream();
container = WebReq.CookieContainer;
StreamReader _Answer = new StreamReader(Answer, Encoding.GetEncoding(1251));
output = _Answer.ReadToEnd();
return output.Trim() + "\n";
}
catch (Exception ex)
{
return ex.Message;
}
}
Пока всё было линейно - проблем не было. Сейчас встала задача получать содержимое страниц асинхронно. Вот и нужно переписать этот метод с помощью модных async/await
И сразу возникли вопросы. Асинхронные методы - либо void, либо возвращают Task<T>. В моём случае логично написать
public async Task<string> Get (string url, bool clearCookie, ref CookieContainer container)
...
а в коде позаменять GetResponse() на GetResponseAsync().
Что дальше - непонятно. Совсем. В результате я получу Task<string>. Как из этого результата "выдрать" нужные мне string? Как вообще обращаться с этим методом? Помогите, пожалуйста, с методом для асинхронной загрузки страницы.