Cliente HTTP para C# (.NET): principais bibliotecas para trabalhar com requisições web

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente HTTP para C# (.NET): visão geral das melhores bibliotecas



No desenvolvimento de aplicações modernas em C# (.NET), quase sempre surge a necessidade de interagir com serviços web e APIs remotas. A classe base HttpClient fornece todos os recursos necessários, mas para cenários complexos (tentativas repetidas, serialização, interface fluente conveniente), a comunidade criou várias bibliotecas wrapper poderosas. Neste artigo, analisaremos os quatro clientes HTTP mais populares para C# (.NET), compararemos seus recursos e forneceremos exemplos de código.



1. HttpClient (integrado no .NET)



HttpClient é a classe padrão do namespace System.Net.Http, disponível em todas as versões do .NET (incluindo .NET Core, .NET 5/6/7/8). Ela é a base sobre a qual todas as outras bibliotecas são construídas.



Vantagens:

  • Não requer instalação de pacotes adicionais (faz parte da BCL).
  • Controle total sobre o processo de envio de requisições.
  • Suporte a HTTP/1.1, HTTP/2, HTTP/3.
  • Suporte integrado para compressão gzip/deflate.
  • Possibilidade de trabalhar com streams (streaming).


Desvantagens:

  • Requer gerenciamento manual de tentativas repetidas (retry).
  • Não possui serialização/desserialização JSON integrada.
  • Código verboso para operações típicas.


Exemplo de uso:

using System.Net.Http;using System.Text.Json;using System.Threading.Tasks;

public class UserClient{ private readonly HttpClient _httpClient;

public UserClient() { _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("https://jsonplaceholder.typicode.com"); }

public async Task<User> GetUserAsync(int id) { var response = await _httpClient.GetAsync($"/users/{id}"); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(json); }

public async Task<User> CreateUserAsync(User user) { var json = JsonSerializer.Serialize(user); var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("/users", content); response.EnsureSuccessStatusCode(); var responseJson = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(responseJson); }}

public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}


2. RestSharp



RestSharp é uma das bibliotecas mais antigas e populares para trabalhar com APIs REST. Ela fornece uma interface fluente conveniente, serialização/desserialização automática de JSON e XML, além de tratamento de erros integrado.



Vantagens:

  • API simples e intuitiva.
  • Serialização/desserialização automática.
  • Suporte integrado para autenticação (Basic, OAuth, JWT).
  • Suporte para uploads de arquivos (multipart/form-data).
  • Sistema flexível de tratamento de erros e tentativas repetidas.


Desvantagens:

  • Dependência de pacote externo (NuGet: RestSharp).
  • Para alguns cenários, abstrai excessivamente o HTTP.


Exemplo de uso:

using RestSharp;using System.Threading.Tasks;

public class UserClient{ private readonly RestClient _client;

public UserClient() { _client = new RestClient("https://jsonplaceholder.typicode.com"); }

public async Task<User> GetUserAsync(int id) { var request = new RestRequ

Recommendations