【发布时间】:2015-12-25 20:45:02
【问题描述】:
我已经使用 Visual Studio 2015 中的控制台应用程序成功地将 json 数据提取到一个字符串中。现在我尝试为 wpf 复制它,但我发现我不能使用 .GetResponse() 并且我有改为使用 GetResponseAsync()。谷歌搜索了一段时间后,我想我理解了异步/等待的意义,但我似乎陷入了僵局。所以这是我当前的代码:
这是从 Web API 提取返回数据并返回 JSON 字符串的异步方法。或者在这种情况下为Task<String>。
public async static Task<String> GetTrola(string station)
{
var url = "http://www.trola.si/" + station;
string text;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Accept = "application/json";
var answer = (HttpWebResponse)(await request.GetResponseAsync());
using (var sr = new StreamReader(answer.GetResponseStream()))
{
text = sr.ReadToEnd();
}
return text;
}
然后我在按钮单击事件中调用该函数,如下所示:
string station = textBox.Text.ToString();
string output = GetJson.Trola.GetTrola(station).Result;
var myObject = JsonConvert.DeserializeObject<Result>(output);
但我认为问题出在 GetData 函数中,尤其是这一行:
var answer = (HttpWebResponse)(await request.GetResponseAsync());
我不知道为什么会这样,因为我在等待带有 await 关键字的请求?我还缺少什么?
【问题讨论】:
标签: c# json wpf asynchronous