This is the code of my .NET core 3.1 console application:
using System.Net.Http.Headers;
using NumbersConsole.Models;
namespace NumbersConsole
{
class Program
{
static HttpClient client = new HttpClient();
static void ShowcaseNumber(NumberModel numberModel)
{
Console.WriteLine("Number: " + numberModel.Number.ToString());
Console.WriteLine("Fact: " + numberModel.Text);
Console.ReadLine();
}
static async Task<NumberModel> GetNumberModelAsync()
{
NumberModel number = null;
var path = new Uri("http://numbersapi.com/41");
HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
number = await response.Content.ReadAsAsync<NumberModel>();
}
return number;
}
static void Main(string[] args)
{
RunAsync();
}
static async Task RunAsync()
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
NumberModel number = new NumberModel();
number = await GetNumberModelAsync();
ShowcaseNumber(numberModel);
}
}
}
And this is my NumberModel.cs:
namespace NumbersConsole.Models
{
public class NumberModel
{
public string Text { get; set; }
public int Number { get; set; }
}
}
Somehow HttpResponseMessage response = await client.GetAsync(path)
does not give a response but instead the program just exits.
I have tried using this answer and this article. I have tried multiple variations of this line of code like
HttpResponseMessage response = client.GetAsync(path).Result;
Does someone know what is wrong with my code?