При выполнении асинхронных вызовов функций вы должны await
завершить задачу, прежде чем получите фактическое возвращаемое значение функции.
Также обратите внимание, что если у вашего метода есть хотя бы один await
, вы должны украсить свой метод ключевым словом async .
Ниже приведен рабочий пример кода.
using (HttpClient client = new HttpClient())
{
try
{
StringContent json = new StringContent(jsonText, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("http://www.localhost.com/", json);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
// Above three lines can be replaced with new helper method below
// string responseBody = await client.GetStringAsync(uri);
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
}
}
Существует множество хороших вопросов и ответов, касающихся проблемы асинхронности / ожидания, один хороший пример здесь .