我早些时候问过这个问题,但没有一个回应最终奏效。所以我有一个类,它发出一个 Web 请求以获取一串数据,以及该类中的一个方法,它调用该方法来执行此操作,然后返回字符串值。
我有 MainPage 类,一个 City 类(WebRequest 返回一个 JSON 字符串,这个类解析它并存储数据),我有一个 WebRetrieval 类。
在 MainPage 我有这个:
private void City_GoButton_Click(object sender, RoutedEventArgs e)
{
City cityObject = new City();
WebRetrieval wr = new WebRetrieval();
string jsonString;
string formattedString;
if (String.IsNullOrWhiteSpace(CityID_Textbox.Text))
{
MessageDialog md = new MessageDialog("Please enter in a number");
md.ShowAsync();
}
else
{
long cityNum = Convert.ToInt64(CityID_Textbox.Text);
string url = "http://honey.computing.dcu.ie/city/city.php?id=" + cityNum;
jsonString = wr.GetResult(url);
formattedString = cityObject.ReturnFormattedString(jsonString);
}
}
在网络检索类中,我有这个:
async public void GetInformation(string url)
{
var client = new HttpClient();
var response = await client.GetAsync(new Uri(url));
result = await response.Content.ReadAsStringAsync();
}
public string GetResult(string url)
{
GetInformation(url);
return result;
}
奇怪的是,在 WebRetrieval 类中,在 GetInformation 方法内部,当它尝试进行响应时,程序会跳转到我的 City 类并失败,因为它接收到的字符串为空。它永远不会到达 GetInformation 方法内的结果行。
我有一种感觉,这与 GetInformation 是异步的并且响应中有 await 的事实有关,但我不知道如何解决它,因为另一个问题中的建议最终没有奏效。
希望有人可以帮助我。干杯