这是一个从网站上检索html内容的简单功能。所以人们可以从中提取数据。 我只发现Window 8有http webservice来获取html。并且只发现了这种方式。如果有人有更好的方式请分享。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
gethtml("URL");
}
public async void gethtml(string URL)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
WebResponse myResponse = await myRequest.GetResponseAsync();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
mainTxtBox.Text = sr.ReadToEnd();
}
由于窗口8只有httpwebrequest只有“GetResponseAsync”,我必须使用await。并且仅用于异步功能。 async函数只返回Task<>或无效。然后从任务<>更改其他格式是如此混乱和混乱。所以我让它返回void并将数据传输到其他全局源。 我没有找到任何简单的解释如何从任务中获取字符串。所以我用这种方式。
答案 0 :(得分:1)
您的gethtml
应该返回Task
而不是void
。只有异步事件处理程序可以安全地返回void
。
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
await gethtml("URL");
}
public async Task gethtml(string URL)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
WebResponse myResponse = await myRequest.GetResponseAsync();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
mainTxtBox.Text = sr.ReadToEnd();
}
但是,我会这样说:
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
mainTxtBox.Text = await gethtml("URL");
}
public async Task<string> gethtml(string URL)
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
WebResponse myResponse = await myRequest.GetResponseAsync();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
return sr.ReadToEnd();
}