这是一个从网站检索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();
}
由于Windows8只有httpwebrequest只有"GetResponseAsync“,所以我必须使用await。并且仅在异步函数中用于离开。异步函数仅返回Task<>或void。在那之后,从Task<>到其他格式的转换是如此混乱和混乱。所以我让它返回void并将数据传输到其他全局源。我找不到任何简单的解释如何从任务中获取字符串。所以我用这种方式。
发布于 2014-03-06 21:34:32
您的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();
}
https://stackoverflow.com/questions/22225970
复制相似问题