DIE IRON SUITE VERWENDEN

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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

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
$vbLabelText   $csharpLabel

Konsolen-Bestätigung

Bestätigung in der Konsole, dass die PDF-Datei gespeichert wurde

PDF-Ausgabe

Beispiel-PDF-Datei

Beispiel 2: Scraping und OCR mit IronOCR

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
$vbLabelText   $csharpLabel

OCR Beispiel Output

Beispielausgabe für die Verwendung von IronOCR mit CurlDotNet

Beispiel 3: Inventarverwaltung mit IronBarcode

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
$vbLabelText   $csharpLabel

IronBarcode-Konsolenausgabe

Beispielausgabe für die Verwendung von IronBarcode mit CurlDotNet

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.

  1. Prüfen Sie GitHub: Besuchen Sie jacob-mellor/curl-dot-net, um den Quellcode, die Dokumentation und das Verzeichnis der Beispiele zu sehen.

  2. Laden Sie das NuGet-Paket herunter: Führen Sie das DotNet Add-Paket CurlDotNet aus, um die Bibliothek zu installieren.

  3. 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.