Avatar ·

Como fazer uma requisição HTTP em C#?

Olá colegas!

Me deparei com uma tarefa aparentemente trivial — fazer uma requisição HTTP para uma API externa a partir de um aplicativo console .NET 6. Li vários tutoriais, mas os exemplos são dispersos: em alguns usam HttpClient, em outros WebClient (obsoleto?), e em alguns — RestSharp. Quero entender a abordagem moderna e correta.

Tentei escrever uma requisição GET simples usando HttpClient, mas o aplicativo trava. Aqui está o código:
var client = new HttpClient();
var response = await client.GetAsync("https://api.github.com/zen");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);

Executo no método Main (sem async), recebo um aviso de que o código assíncrono não está sendo aguardado. Tentei adicionar .Result — começou um deadlock. Também não está claro se é necessário chamar Dispose() para HttpClient e como tratar erros corretamente (timeout