Я спросил об этом раньше, но ни один из ответов не закончился. Итак, у меня есть класс, который делает веб-запрос для получения строки данных и метод в этом классе, который вызывает метод для этого, а затем возвращает строковое значение.C# Веб-запрос вызывает сбой
У меня есть класс 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);
}
}
А в классе Web Retrieval я это:
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 и терпит неудачу, потому что полученная строка равна null. Он никогда не попадает в результирующую строку внутри метода GetInformation.
У меня такое чувство, что это связано с тем, что GetInformation является асинхронным, и ответ ожидал в нем, но я не знаю, как это исправить, поскольку предложения в другом вопросе не закончились за работой.
Надеюсь, кто-то может мне помочь. Приветствия
Ничего себе, что отличный ответ. Это сработало для меня и объяснило это очень хорошо! Большое вам спасибо за то, что нашли время, чтобы объяснить этого человека! – AndyOHart