В этот день я опубликовал сообщение о получении данных из веб-интерфейса на Windows Phone 7, но мне кажется, что я слишком усложнил ситуацию и был слишком неясен относительно того, что я хотел сделать.
Теперь я пытаюсь сделать так, чтобы метод выходил и извлекал некоторые данные в формате xml из webapi и возвращал их, проанализированные классу.
Например:
public List<Alliance> getAllianceList()
{
const string serviceUrl = "/eve/AllianceList.xml.aspx";
string xml = getXML(serviceUrl);
//Some parsing logic and then returns it.
}
В getXML я пытаюсь получить данные, используя WebClient или HttpWebRequest (не знает, какой из них лучший), а затем возвращает его. Но проблема в моем сценарии заключается в том, что он асинхронный, и у меня мало знаний об асинхронности.
Вот как я сделал это до сих пор:
private string _xml = "";
public string getXML(string serviceUrl)
{
var webClient = new WebClient();
webClient.DownloadStringCompleted += webClient_DownloadStringCompleted;
webClient.DownloadStringAsync(new Uri(ApiUrl + serviceUrl));
}
void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
_xml = e.Result;
}
}
Теперь я не понимаю, как продолжить синтаксический анализ в getAllianceList, если запрос асинхронный.
Должен ли я сделать всю "цепочку" из и включая асинхронную функцию getAllianceList? И если да, то как?