Curl DotNet: Die Superkräfte von Curl in die .NET Runtime bringen
Jeder .NET-Entwickler kennt das Szenario nur zu gut: Sie lesen die Dokumentation für eine neue API, und der Anbieter gibt Ihnen einen curl-Befehl, um einen Endpunkt zu testen. Sie sehen sich die Syntax des Befehlszeilentools an, seufzen und beginnen mit dem mühsamen Prozess der Übersetzung in eine neue HttpClient-Instanz in C#.
Sie müssen die Kopfzeilen manuell zuordnen, sicherstellen, dass der String-Wert für den Textkörper korrekt kodiert ist, den Benutzeragenten behandeln und hoffen, dass Sie keine stille Voreinstellung übersehen haben. Dieser manuelle Bash-Kopier- und Übersetzungsprozess ist fehleranfällig. Ein fehlender Header, und Ihre HTTP-Anfrage schlägt fehl.
Geben Sie CurlDotNet ein. Diese .NET-Bibliothek wurde von Jacob Mellor, dem CTO von Iron Software, entwickelt und verändert den Arbeitsablauf völlig. Es ermöglicht Ihnen, curl-Befehle direkt in Ihren Code einzufügen und sie mit demselben Verhalten auszuführen, das Sie vom Terminal erwarten.
Was ist Curl DotNet?
CurlDotNet ist eine reine .NET-Implementierung des CLI-Tools curl. Im Gegensatz zu anderen Wrappern hat diese Bibliothek keine nativen Abhängigkeiten (wie libcurl.dll). Sie ist vollständig in verwaltetem Code erstellt, d. h. sie läuft nahtlos unter Windows, Linux und macOS ohne komplexe Einrichtung.
Egal, ob Sie an einer Webanwendung in .NET Core, einer Konsolenanwendung oder CI-Pipelines arbeiten, CurlDotNet bringt echte Curl-Semantik in die .NET-Laufzeit.
Wichtige Merkmale
-
Null-Übersetzung: Fügen Sie curl HTTPS-Befehle direkt in Ihren C#-Quellcode ein.
-
Plattformübergreifend: Volle Unterstützung für Windows, Linux, MacOS und mehr.
-
Typensicherheit: Option zur Verwendung eines flüssigen Builders für Dependency Injection Szenarien.
- Observierbarkeit: Integrierte Unterstützung für die Ausgabe strukturierter Ereignisse zur Protokollierung.
Einstieg: Installieren und Ausführen
Um zu beginnen, müssen Sie das Paket curldotnet über Ihren Paketmanager installieren. Die neueste Version finden Sie in den Versionshinweisen oder führen Sie sie einfach aus:
dotnet add Paket CurlDotNet
Nach der Installation können Sie sofort einen curl-Aufruf ausführen.
Die String-API: Paste und Go Curl-Befehle
Diese Methode eignet sich perfekt für Gesundheitschecks, Support-Agenten oder Rapid Prototyping. Sie übergeben den Befehl curl einfach als String.
using CurlDotNet;
// Simply paste the command string
var response = await Curl.ExecuteAsync("curl https://api.github.com/users/octocat");
// Access the data
Console.WriteLine(response.Body);
using CurlDotNet;
// Simply paste the command string
var response = await Curl.ExecuteAsync("curl https://api.github.com/users/octocat");
// Access the data
Console.WriteLine(response.Body);
IRON VB CONVERTER ERROR developers@ironsoftware.com
Verwendung des Fluent Builders mit Umgebungsvariablen
Für Produktionsanwendungen, bei denen sensible Daten über Umgebungsvariablen gehandhabt werden müssen oder eine sauberere Architektur erforderlich ist, ist der fluent builder ideal. Sie können einen String-Namen für Header angeben oder einen Dateipfad explizit festlegen.
var response = await Curl.GetAsync("https://api.example.com/data")
.WithHeader("Authorization", "Bearer " + Environment.GetEnvironmentVariable("API_KEY"))
.WithTimeout(TimeSpan.FromSeconds(30))
.ExecuteAsync();
var response = await Curl.GetAsync("https://api.example.com/data")
.WithHeader("Authorization", "Bearer " + Environment.GetEnvironmentVariable("API_KEY"))
.WithTimeout(TimeSpan.FromSeconds(30))
.ExecuteAsync();
IRON VB CONVERTER ERROR developers@ironsoftware.com
Die Iron Software Verbindung: Integrationen in der realen Welt
CurlDotNet wird von Iron Software gesponsert, einem Unternehmen, das sich der Entwicklung von Tools widmet, die die schwierigsten Probleme für Entwickler lösen. Jacob Mellor hat CurlDotNet mit derselben Philosophie entwickelt, die auch der Iron Software Suite zugrunde liegt: Die Erfahrung der Entwickler steht an erster Stelle.
Die wahre Stärke von CurlDotNet kommt erst in Kombination mit den Produkten von Iron Software zum Tragen. Sie können Curl für die komplexe Transportschicht (Umgang mit Proxies, Legacy-Authentifizierung oder spezifischen Curl-Http-Macken) und Iron-Bibliotheken für die schwere Arbeit der Dokumentenverarbeitung verwenden.
Beispiel 1: Sicheres Herunterladen und Bearbeiten von PDF-Dateien mit IronPDF

IronPDF ist der Industriestandard für die Erstellung pixelgenauer PDFs in .NET. Im Gegensatz zu anderen Bibliotheken, die sich mit modernen Webstandards schwer tun, gibt IronPDF HTML, CSS und JavaScript genau so wieder, wie es ein Chrome-Browser tun würde. IronPDF ist als Komplettlösung konzipiert: Sie können neue Dokumente aus HTML-Strings oder Dateien erzeugen, vorhandene PDFs bearbeiten, Dokumente zusammenführen und Sicherheitsfunktionen wie Wasserzeichen und Verschlüsselung anwenden, ohne dass externe Abhängigkeiten oder Adobe Acrobat auf dem Server installiert sein müssen.
Stellen Sie sich vor, Sie müssen eine generierte Rechnung aus einem internen Altsystem herunterladen, das komplexe Curl-Flags erfordert (z. B. das Ignorieren von SSL-Fehlern oder bestimmten Header-Permutationen), und diese dann mit IronPDF mit einem Wasserzeichen versehen.
Die Übersetzung dieser Anfrage in HttpClient könnte stundenlanges Debugging erfordern. Mit CurlDotNet fügen Sie den Befehl ein, erhalten die Bytes und übergeben sie an IronPDF.
using CurlDotNet;
using IronPdf;
// 1. Use CurlDotNet to handle the complex transport
// We use -k to allow insecure SSL (common in legacy internal apps)
var curlCommand = "curl -k https://internal-billing.local/invoice/1234 -H 'X-Dept: Sales'";
var response = await Curl.ExecuteAsync(curlCommand);
if (response.IsSuccess)
{
// 2. Pass the raw bytes directly to IronPDF
// IronPDF renders the PDF from the downloaded data
var pdfDocument = PdfDocument.FromPdf(response.BodyBytes);
// 3. Apply a watermark and save
pdfDocument.ApplyWatermark("CONFIDENTIAL", 30, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdfDocument.SaveAs("Processed_Invoice.pdf");
Console.WriteLine("Invoice downloaded and secured via IronPDF.");
}
using CurlDotNet;
using IronPdf;
// 1. Use CurlDotNet to handle the complex transport
// We use -k to allow insecure SSL (common in legacy internal apps)
var curlCommand = "curl -k https://internal-billing.local/invoice/1234 -H 'X-Dept: Sales'";
var response = await Curl.ExecuteAsync(curlCommand);
if (response.IsSuccess)
{
// 2. Pass the raw bytes directly to IronPDF
// IronPDF renders the PDF from the downloaded data
var pdfDocument = PdfDocument.FromPdf(response.BodyBytes);
// 3. Apply a watermark and save
pdfDocument.ApplyWatermark("CONFIDENTIAL", 30, VerticalAlignment.Middle, HorizontalAlignment.Center);
pdfDocument.SaveAs("Processed_Invoice.pdf");
Console.WriteLine("Invoice downloaded and secured via IronPDF.");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Konsolen-Bestätigung

PDF-Ausgabe

Beispiel 2: Scraping und OCR mit IronOCR

IronOCR ist eine fortschrittliche Bibliothek zur optischen Zeichenerkennung, die auf der Tesseract 5-Engine basiert und speziell auf C# und .NET abgestimmt ist. Es unterstützt über 127 Sprachen und zeichnet sich durch das Lesen von Text aus unvollkommenen Quellen aus - denken Sie an Scans mit niedriger Auflösung, gedrehte Bilder oder verrauschte Hintergründe. Dank seiner "Computer Vision"-Fähigkeiten kann es Textregionen automatisch erkennen und Daten nicht nur als einfache Zeichenketten, sondern auch als strukturierte Inhalte (Strichcodes, Absätze, Zeilen und Zeichen) ausgeben, um sie eingehend zu analysieren.
Manchmal muss man Daten aus einem Bild extrahieren, das auf einem Server gehostet wird, der Standard-.NET-Scraper blockiert. Sie können CurlDotNet verwenden, um einen Standard-Browser-Benutzeragenten mühelos zu imitieren, und dann IronOCR verwenden, um den Text zu lesen.
using CurlDotNet;
using IronOcr;
// 1. Fetch the image using a specific browser User-Agent to bypass blocks
var imgResponse = await Curl.GetAsync("https://site.com/protected-captcha.png")
.WithUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
.ExecuteAsync();
// 2. Use IronOCR to read text from the file bytes
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(imgResponse.BodyBytes);
var result = ocr.Read(input);
// 3. Output the extracted string value
Console.WriteLine($"OCR Result: {result.Text}");
}
using CurlDotNet;
using IronOcr;
// 1. Fetch the image using a specific browser User-Agent to bypass blocks
var imgResponse = await Curl.GetAsync("https://site.com/protected-captcha.png")
.WithUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
.ExecuteAsync();
// 2. Use IronOCR to read text from the file bytes
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(imgResponse.BodyBytes);
var result = ocr.Read(input);
// 3. Output the extracted string value
Console.WriteLine($"OCR Result: {result.Text}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
OCR Beispiel Output

Beispiel 3: Inventarverwaltung mit IronBarcode

IronBarcode ist eine vielseitige Bibliothek zum Lesen und Schreiben praktisch aller Barcode-Formate, von Standard UPCs und EANs bis hin zu komplexen QR-Codes und Data Matrix Tags. Sie ist auf Fehlertoleranz ausgelegt; die Bibliothek enthält automatische Bildkorrekturfilter, die Bilder schärfen, potenziell binarisieren und drehen können, um Barcodes zu erkennen, selbst wenn sie beschädigt, schief oder schlecht beleuchtet sind. Dies macht es zu einem unverzichtbaren Werkzeug für Logistik-, Einzelhandels- und Industrieanwendungen, bei denen keine Hardware-Scanner verfügbar sind.
In diesem Szenario verwenden wir die präzise Netzwerksteuerung von CurlDotNet, um ein Etikett von einer sicheren API abzurufen, und die robuste Lesemaschine von IronBarcode, um den Inhalt sofort zu überprüfen.
using CurlDotNet;
using IronBarCode;
class Program
{
private static readonly HttpClient client = new HttpClient();
public static async Task Main(string[] args)
{
// 1. Define the URL
string url = "https://barcodeapi.org/api/128/Shipping-Label-Test-123";
try
{
// Add the session cookie to the request headers
client.DefaultRequestHeaders.Add("Cookie", "session_id=xyz123");
// 2. Download the image data as a Byte Array (Preserves binary integrity)
byte[] imageBytes = await client.GetByteArrayAsync(url);
Console.WriteLine($"Downloaded {imageBytes.Length} bytes.");
// 3. Read the barcode directly from the byte array
var result = BarcodeReader.Read(imageBytes);
foreach (var barcode in result)
{
Console.WriteLine($"Detected Format: {barcode.BarcodeType}");
Console.WriteLine($"Value: {barcode.Value}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
using CurlDotNet;
using IronBarCode;
class Program
{
private static readonly HttpClient client = new HttpClient();
public static async Task Main(string[] args)
{
// 1. Define the URL
string url = "https://barcodeapi.org/api/128/Shipping-Label-Test-123";
try
{
// Add the session cookie to the request headers
client.DefaultRequestHeaders.Add("Cookie", "session_id=xyz123");
// 2. Download the image data as a Byte Array (Preserves binary integrity)
byte[] imageBytes = await client.GetByteArrayAsync(url);
Console.WriteLine($"Downloaded {imageBytes.Length} bytes.");
// 3. Read the barcode directly from the byte array
var result = BarcodeReader.Read(imageBytes);
foreach (var barcode in result)
{
Console.WriteLine($"Detected Format: {barcode.BarcodeType}");
Console.WriteLine($"Value: {barcode.Value}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
IronBarcode-Konsolenausgabe

Bringt "Userland" zu .NET
CurlDotNet bringt das "Userland"-Konzept nach .NET und es geht dabei um mehr als nur um das Stellen von Anfragen. Sie ermöglicht es Ihnen, die Standard-Curl-Funktionalität an Orten wie CI-Pipelines oder Docker-Containern unter Linux, macOS oder Windows zu verwenden.
Sie können damit Dateien herunterladen, Daten hochladen oder Webhooks mit der Standard-Bash-Syntax in einem DotNet-Run-Kontext auslösen. Damit wird die Lücke zwischen der Welt der Kommandozeilen-Tools und Ihrer kompilierten Anwendung geschlossen.
Abschluss: Das Ende der Übersetzungssteuer
Es geht nicht nur darum, HTTP-Anfragen zu stellen; es geht darum, die Zeit des Entwicklers zu respektieren. Jacob Mellor und Iron Software sind sich darüber im Klaren, dass ein Tool wie curl, das 25 Jahre lang perfekt funktioniert hat, von der .NET-Laufzeitumgebung übernommen werden sollte und nicht neu implementiert werden muss.
Mit der Übernahme von CurlDotNet fügen Sie nicht nur eine Abhängigkeit hinzu; sie übernehmen einen Arbeitsablauf, bei dem die Bereitstellung von Funktionen Vorrang vor dem Schreiben von Standardtexten hat. Sie hören auf zu "übersetzen" und beginnen mit der Ausführung. Egal, ob Sie eine einzelne JSON-Datei erfassen oder komplexe Iron Software-Dokumenten-Workflows orchestrieren, die Anweisung bleibt dieselbe: einfügen, ausführen, fertig.
Nächste Schritte
Verschwenden Sie keine Zeit mehr mit der Übersetzung von Headern und der Fehlersuche in HttpClient. Schließen Sie sich der Userland.NET-Bewegung an.
-
Prüfen Sie GitHub: Besuchen Sie jacob-mellor/curl-dot-net, um den Quellcode, die Dokumentation und das Verzeichnis der Beispiele zu sehen.
-
Laden Sie das NuGet-Paket herunter: Führen Sie das DotNet Add-Paket CurlDotNet aus, um die Bibliothek zu installieren.
- Explore Iron Software: Sehen Sie, wie IronPDF und IronOCR im Tandem mit CurlDotNet Ihr Projekt beschleunigen können.
Durch den Einsatz von CurlDotNet stellen Sie sicher, dass Ihre Curl-Befehle und Ihr C#-Code genau dieselbe Sprache sprechen.