HTTP-Client für C# (.NET): Top-Bibliotheken für die Arbeit mit Webanfragen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

HTTP-Client für C# (.NET): Überblick über die besten Bibliotheken



Bei der Entwicklung moderner Anwendungen in C# (.NET) besteht fast immer die Notwendigkeit, mit entfernten Webdiensten und APIs zu interagieren. Die Basisklasse HttpClient bietet alle notwendigen Funktionen, aber für komplexe Szenarien (Wiederholungsversuche, Serialisierung, bequeme Fluent-Schnittstelle) hat die Community mehrere leistungsstarke Wrapper-Bibliotheken entwickelt. In diesem Artikel betrachten wir die vier beliebtesten HTTP-Clients für C# (.NET), vergleichen ihre Funktionen und geben Codebeispiele.



1. HttpClient (in .NET integriert)



HttpClient ist die Standardklasse aus dem Namespace System.Net.Http, die in allen .NET-Versionen (einschließlich .NET Core, .NET 5/6/7/8) verfügbar ist. Sie ist die Grundlage, auf der alle anderen Bibliotheken aufbauen.



Vorteile:

  • Erfordert keine Installation zusätzlicher Pakete (in der BCL enthalten).
  • Volle Kontrolle über den Prozess des Sendens von Anfragen.
  • Unterstützung für HTTP/1.1, HTTP/2, HTTP/3.
  • Integrierte Unterstützung für gzip/deflate-Komprimierung.
  • Möglichkeit der Arbeit mit Streams (Streaming).


Nachteile:

  • Erfordert manuelle Verwaltung von Wiederholungsversuchen (Retry).
  • Keine integrierte JSON-Serialisierung/Deserialisierung.
  • Ausführlicher Code für Standardoperationen.


Anwendungsbeispiel:

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 ist eine der ältesten und beliebtesten Bibliotheken für die Arbeit mit REST-APIs. Sie bietet eine bequeme Fluent-Schnittstelle, automatische JSON- und XML-Serialisierung/Deserialisierung sowie integrierte Fehlerbehandlung.



Vorteile:

  • Einfache und intuitive API.
  • Automatische Serialisierung/Deserialisierung.
  • Integrierte Unterstützung für Authentifizierung (Basic, OAuth, JWT).
  • Unterstützung für Datei-Uploads (multipart/form-data).
  • Flexibles System zur Fehlerbehandlung und Wiederholungsversuchen.


Nachteile:

  • Abhängigkeit von einem externen Paket (NuGet: RestSharp).
  • Für einige Szenarien abstrahiert es HTTP übermäßig.


Anwendungsbeispiel:

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

Empfehlungen