Avatar ·

Как сделать HTTP запрос в C#?

Приветствую коллеги!

Столкнулся с тривиальной, казалось бы, задачей — выполнить HTTP запрос к внешнему API из консольного приложения .NET 6. Прочитал несколько туториалов, но везде примеры разрозненные: где-то используют HttpClient, где-то WebClient (устарел?), а в некоторых — RestSharp. Хочется понять современный и правильный подход.

Я пробовал написать простой GET запрос через HttpClient, но приложение зависает. Вот код:
var client = new HttpClient();
var response = await client.GetAsync("https://api.github.com/zen");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);

Запускаю в методе Main (без async), получаю предупреждение, что асинхронный код не ждётся. Пробовал добавить .Result — началась deadlock. Также неясно, нужно ли вызывать Dispose() для HttpClient и как правильно обрабатывать ошибки (таймауты, 404, 500).

Ожидаю получить рабочий пример синхронного и асинхронного GET/POST запроса с обработкой ошибок и без утечки ресурсов. Желательно с комментариями, почему именно так, а не иначе. Заранее спасибо!