我知道已有解决方案,但我真的在努力解决这个问题。
我需要从URL加载XML文档并解析它以提取各种信息。我尝试过使用:
var doc = new XDocument();
doc = XDocument.Load(url);
这在独立的C#应用程序中运行良好,但它不能在手机应用程序中运行。我相信我需要使用WebClient.DownloadStringAsync
和WebClient.DownloadStringCompleted
异步执行此操作,但我不知道如何从此处获取文档以便我可以解析它。
感谢您的帮助。
编辑:如果它有用,我试图访问BigOven API并从中返回XML。
编辑#2:尝试异步方法后的代码。
public static string xml;
private static void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
xml = e.Result; // this is always null
}
}
public static string QueryApi(string searchTerm)
{
WebClient wc = new WebClient();
wc.DownloadStringCompleted += DownloadCompleted;
wc.DownloadStringAsync(new Uri("http://www.w3schools.com/xml/note.xml"));
var doc = XDocument.Parse(xml);
}
编辑#3:尝试等待下载完成后的代码。
public static string xml;
public static XDocument doc;
private static void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
xml = e.Result; // this is always null
doc = XDocument.Parse(xml);
}
}
public static string QueryApi(string searchTerm)
{
WebClient wc = new WebClient();
wc.DownloadStringCompleted += DownloadCompleted;
wc.DownloadStringAsync(new Uri("http://www.w3schools.com/xml/note.xml"));
}
答案 0 :(得分:1)
这看起来比应该更复杂。与this answer类似,如何在Windows Phone since 7.5上使用HttpClient
:
static XDocument GetXml(string url)
{
using (HttpClient client = new HttpClient())
{
var response = client.GetStreamAsync(url);
return XDocument.Load(response.Result);
}
}