CLI Basitliği ve .NET'i Birleştirme: IronPDF ile Curl DotNet Kullanımı
Hızlı komut satırı araç betikleri ve sağlam .NET kodu arasındaki farkı kapatmaya çalışan geliştiriciler için sürtüşme genellikle çalışan bir cURL komutunu C# içinde uygun bir HTTP isteğine dönüştürmede yatmaktadır. Jacob Mellor bu boşluğu CurlDotNet ile kapatarak .NET ekosistemine cURL'ün tanıdıklığını getiren bir kütüphane oluşturdu.
Bu aracı Iron Software ürünleri gibi IronPDF veya IronXL ile birleştirerek, karmaşık API çağrıları yoluyla veri toplayan ve anında profesyonel raporlar üreten güçlü hatlar oluşturabilirsiniz. Bu makalede, bu araçların projelerinizi bir sonraki seviyeye taşıyabileceği bazı örneklere bakacağız.
CurlDotNet nedir?
CurlDotNet, endüstri standardı curl aracının saf bir C# .NET uygulamasıdır. Yerel bağımlılıklara veya libcurl'a dayanan sarmalayıcıların aksine, bu kütüphane, tamamen yönetilen bir çözüm sunar ve Windows, Linux, macOS ve daha fazlası için tam destek sağlar. API dökümanlarından bir komutun bash kopyasını doğrudan kodunuza yapıştırmanıza olanak tanıyarak standart istemciyle aynı davranışı sağlar.
Hızlı Başlangıç ve Kurulum
Başlamak için, aşağıdaki komutu proje dizininizde çalıştırın:
dotnet add package curldotnet
Bu, CurlDotNet paketini yükler, HttpClient konfigürasyonunun yükü olmadan web isteklerini işlemeye hazır tariflere erişmenizi sağlar.
Curl-Dot-Net Curl Komutlarını Kullanma
Kütüphane, string değerli komutları parçalayıp çözmede mükemmeldir. GitHub API sayfasından veya dahili belgelerden bir curl http stringiniz varsa, doğrudan çalıştırabilirsiniz.
using CurlDotNet;
// Simply copy-paste your shell command
var command = "curl -X GET https://api.github.com/users/jacob-mellor -H 'User-Agent: curl-dot-net'";
var result = await Curl.ExecuteAsync(command);
Console.WriteLine(result.Body);
using CurlDotNet;
// Simply copy-paste your shell command
var command = "curl -X GET https://api.github.com/users/jacob-mellor -H 'User-Agent: curl-dot-net'";
var result = await Curl.ExecuteAsync(command);
Console.WriteLine(result.Body);
Imports CurlDotNet
' Simply copy-paste your shell command
Dim command As String = "curl -X GET https://api.github.com/users/jacob-mellor -H 'User-Agent: curl-dot-net'"
Dim result = Await Curl.ExecuteAsync(command)
Console.WriteLine(result.Body)
.NET Kod Curl DotNet Çıktısı

Yapısal bir yaklaşımı tercih edenler için, akıcı gereç başlıkları, curl seçenekleri ve erişim tokenlarını belirlemek için temiz bir API sunar.
var response = await Curl.GetAsync("https://api.github.com/users/ironsoftware")
.WithHeader("Authorization", "Bearer YOUR_TOKEN")
.WithHeader("X-API-Key", "12345")
.ExecuteAsync();
var response = await Curl.GetAsync("https://api.github.com/users/ironsoftware")
.WithHeader("Authorization", "Bearer YOUR_TOKEN")
.WithHeader("X-API-Key", "12345")
.ExecuteAsync();
Dim response = Await Curl.GetAsync("https://api.github.com/users/ironsoftware") _
.WithHeader("Authorization", "Bearer YOUR_TOKEN") _
.WithHeader("X-API-Key", "12345") _
.ExecuteAsync()
Bu esneklik, TLS el sıkışma mekaniklerini, hız sınırlamalarını ve hata yönetimini içsel olarak ele alır ve curl çalıştırılabilirinin varsayılan davranışını taklit eder.
.NET Framework'te Iron Software ile Entegrasyon
CurlDotNet'in çıktısını Iron Software araçlarına yönlendirdiğinizde gerçek güç açığa çıkar. CurlDotNet taşıma katmanını (JSON, dosyalar veya HTML'i alma) yönettiğinden, Iron Software ürünleri o içeriği işlemeye odaklanabilir.
Senaryo: API Verilerinden PDF Raporları Oluşturma
Güvenli bir URL'den kullanıcı verilerini indirmeniz ve bir PDF raporu oluşturmanız gerektiğini hayal edin. API, HttpClient ile çoğaltılması zor olan ancak bir curl komutuyla kolay olan belirli bir bash imzası gerektirir.
Adım 1: Curl-Dot-Net ile Veri Alın
// Define the curl command string with all necessary headers (here we use an example test website)
string curlCmd = "curl https://www.w3.org/TR/html4/ -H 'X-API-Key: secure_key'";
// Execute the request
var result = await Curl.ExecuteAsync(curlCmd);
// Extract the content (assumed to be HTML for this scenario)
string htmlContent = result.Body;
// Define the curl command string with all necessary headers (here we use an example test website)
string curlCmd = "curl https://www.w3.org/TR/html4/ -H 'X-API-Key: secure_key'";
// Execute the request
var result = await Curl.ExecuteAsync(curlCmd);
// Extract the content (assumed to be HTML for this scenario)
string htmlContent = result.Body;
Imports System.Threading.Tasks
' Define the curl command string with all necessary headers (here we use an example test website)
Dim curlCmd As String = "curl https://www.w3.org/TR/html4/ -H 'X-API-Key: secure_key'"
' Execute the request
Dim result = Await Curl.ExecuteAsync(curlCmd)
' Extract the content (assumed to be HTML for this scenario)
Dim htmlContent As String = result.Body
Adım 2: IronPDF ile PDF Oluşturun
IronPDF, HTML, CSS, JavaScript ve görüntüleri yüksek kaliteli PDF belgelerine dönüştürmek amacıyla tasarlanmış güçlü bir kütüphanedir. Modern web standartları için tam destek sunar ve başlıklar, altbilgiler ekleme ve belirli render seçenekleri ayarlama gibi özellikleri içerir.
using IronPdf;
// Instantiate the renderer
var renderer = new ChromePdfRenderer();
// Convert the fetched HTML data to PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the file to the output path
pdf.SaveAs("output.pdf");
using IronPdf;
// Instantiate the renderer
var renderer = new ChromePdfRenderer();
// Convert the fetched HTML data to PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the file to the output path
pdf.SaveAs("output.pdf");
Imports IronPdf
' Instantiate the renderer
Dim renderer As New ChromePdfRenderer()
' Convert the fetched HTML data to PDF
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Save the file to the output path
pdf.SaveAs("output.pdf")
Çıktı

Senaryo: JSON'u Excel'e Aktarma
Uygulamanız bir JSON beslemesi tüketiyorsa, CurlDotNet'in test yeteneklerini kullanarak alabilir ve IronXL kullanarak dışa aktarabilirsiniz.
Adım 1: Curl-Dot-Net ile JSON Verilerini Alın
JSON beslemesini almak için temiz .NET kodu için akıcı gerekeni kullanıyoruz:
string testUrl = "https://jsonplaceholder.typicode.com/users";
Console.WriteLine($"Executing HTTP request to fetch JSON from: {testUrl}");
// Replace the CurlDotNet fluent builder usage with the correct async method
var response = await Curl.GetAsync(testUrl); // Use Curl.GetAsync() for async HTTP GET
string jsonBody = response.Body;
string testUrl = "https://jsonplaceholder.typicode.com/users";
Console.WriteLine($"Executing HTTP request to fetch JSON from: {testUrl}");
// Replace the CurlDotNet fluent builder usage with the correct async method
var response = await Curl.GetAsync(testUrl); // Use Curl.GetAsync() for async HTTP GET
string jsonBody = response.Body;
Imports System
Dim testUrl As String = "https://jsonplaceholder.typicode.com/users"
Console.WriteLine($"Executing HTTP request to fetch JSON from: {testUrl}")
' Replace the CurlDotNet fluent builder usage with the correct async method
Dim response = Await Curl.GetAsync(testUrl) ' Use Curl.GetAsync() for async HTTP GET
Dim jsonBody As String = response.Body
Adım 2: IronXL kullanarak Yükleyin ve Excel'e Aktarın
IronXL, Excel dosya formatlarını okuma, yazma ve manipüle etme (.xlsx, .xls, .csv) ile ilgili tüm yönleri ele almak üzere tasarlanmış kapsamlı bir .NET kütüphanesidir. Önemli olan, sunucu veya istemci bilgisayara Microsoft Office kurulmasına gerek kalmadan bunu yapmasıdır, bu da çapraz platform Linux ve CI CD ortamları için idealdir. Temel özellikler arasında grafik oluşturma, formülleri uygulama ve hücreleri biçimlendirme desteği bulunmaktadır.
Hammadde JSON verisi artık bir dizede olduğuna göre IronXL, bunu ayrıştırmak ve bir elektronik tablo oluşturmak için kullanılabilir.
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var sheet = workbook.CreateWorkSheet("User Data");
// 1. Deserialize the JSON string to a list of UserRecord objects
Console.WriteLine("Deserializing JSON data...");
var salesRecords = JsonConvert.DeserializeObject<List<UserRecord>>(jsonBody);
// 2. Insert the data into the sheet using IronXL's SetCellValue method
Console.WriteLine("Inserting data into Excel using IronXL...");
// Write headers
sheet.SetCellValue(0, 0, "id");
sheet.SetCellValue(0, 1, "name");
sheet.SetCellValue(0, 2, "username");
sheet.SetCellValue(0, 3, "email");
// Write data rows
for (int i = 0; i < salesRecords.Count; i++)
{
var record = salesRecords[i];
sheet.SetCellValue(i + 1, 0, record.id);
sheet.SetCellValue(i + 1, 1, record.name);
sheet.SetCellValue(i + 1, 2, record.username);
sheet.SetCellValue(i + 1, 3, record.email);
}
// Save the Excel file
string filePath = "UserReport.xlsx";
workbook.SaveAs(filePath);
Console.WriteLine($"\n Success! Excel report saved to: {Path.GetFullPath(filePath)}");
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
var sheet = workbook.CreateWorkSheet("User Data");
// 1. Deserialize the JSON string to a list of UserRecord objects
Console.WriteLine("Deserializing JSON data...");
var salesRecords = JsonConvert.DeserializeObject<List<UserRecord>>(jsonBody);
// 2. Insert the data into the sheet using IronXL's SetCellValue method
Console.WriteLine("Inserting data into Excel using IronXL...");
// Write headers
sheet.SetCellValue(0, 0, "id");
sheet.SetCellValue(0, 1, "name");
sheet.SetCellValue(0, 2, "username");
sheet.SetCellValue(0, 3, "email");
// Write data rows
for (int i = 0; i < salesRecords.Count; i++)
{
var record = salesRecords[i];
sheet.SetCellValue(i + 1, 0, record.id);
sheet.SetCellValue(i + 1, 1, record.name);
sheet.SetCellValue(i + 1, 2, record.username);
sheet.SetCellValue(i + 1, 3, record.email);
}
// Save the Excel file
string filePath = "UserReport.xlsx";
workbook.SaveAs(filePath);
Console.WriteLine($"\n Success! Excel report saved to: {Path.GetFullPath(filePath)}");
Imports IronXL
Imports Newtonsoft.Json
Imports System.IO
Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet = workbook.CreateWorkSheet("User Data")
' 1. Deserialize the JSON string to a list of UserRecord objects
Console.WriteLine("Deserializing JSON data...")
Dim salesRecords = JsonConvert.DeserializeObject(Of List(Of UserRecord))(jsonBody)
' 2. Insert the data into the sheet using IronXL's SetCellValue method
Console.WriteLine("Inserting data into Excel using IronXL...")
' Write headers
sheet.SetCellValue(0, 0, "id")
sheet.SetCellValue(0, 1, "name")
sheet.SetCellValue(0, 2, "username")
sheet.SetCellValue(0, 3, "email")
' Write data rows
For i As Integer = 0 To salesRecords.Count - 1
Dim record = salesRecords(i)
sheet.SetCellValue(i + 1, 0, record.id)
sheet.SetCellValue(i + 1, 1, record.name)
sheet.SetCellValue(i + 1, 2, record.username)
sheet.SetCellValue(i + 1, 3, record.email)
Next
' Save the Excel file
Dim filePath As String = "UserReport.xlsx"
workbook.SaveAs(filePath)
Console.WriteLine(vbCrLf & " Success! Excel report saved to: " & Path.GetFullPath(filePath))
Çıktı Excel Dosyası

Bu Kombinasyon Neden?
-
Çapraz Platform Tutarlılığı: Hem CurlDotNet hem de IronSoftware ürünleri Windows, Linux, ve macOS'u destekler. Bu, Microsoft Azure veya AWS Lambda gibi yürütme ortamlarında çalışan CI CD boru hatları için kritik öneme sahiptir.
-
Kod Üretimi: Geliştiriciler genellikle bash veya kabuk formatında kod üretim parçaları alır. curl-dot-net, bu parçaları doğrudan kullanmanıza olanak tanır ve Iron Software ise belge manipülasyonunun ağır yükünü taşır.
- Yerel Bağımlılıklara Gerek Yoktur: CurlDotNet, saf bir C# uygulaması olduğundan, farklı işletim sistemi sürümlerinde harici C++ kütüphanelerini veya libcurl ikili dosyalarını bağlama ile ilgili yaygın sorunlardan kaçınabilirsiniz.
Sonuç
Jacob Mellor, DotNet topluluğu için önemli bir araç sağladı. Geliştiricilerin, .NET Framework ve Core uygulamalarında tanıdık curl seçeneklerini kullanmalarına olanak tanıyan CurlDotNet, http istek sürecini basitleştirir. Iron Software ile eşleştirildiğinde, veriler toplandığında, IronPDF veya IronXL gücüyle işlenmesiyle birleşik bir iş akışı oluşturabilirsiniz.
Sorunlarla karşılaşırsanız, her kullanıcı için desteği artırmaya yardımcı olmak amacıyla GitHub sayfasında hataları bildiriniz.
Sıkça Sorulan Sorular
CurlDotNet nedir?
CurlDotNet, cURL işlevselliğini .NET ekosistemine getirmek için Jacob Mellor tarafından oluşturulmuş bir kütüphanedir ve geliştiricilere cURL komutlarını kolayca .NET koduna çevirmelerine olanak tanır.
CurlDotNet geliştiricilere nasıl yardımcı olur?
CurlDotNet, komut satırı araç betiklerini sağlam .NET uygulamalarına entegre etmeyi kolaylaştırarak cURL komut satırı işlemlerini C# içinde HTTP isteklerine dönüştürme sürecini basitleştirir.
CurlDotNet hangi problemi çözer?
CurlDotNet, cURL komutlarını C# içinde uygun HTTP isteklerine dönüştürürken geliştiricilerin karşılaştıkları sürtünme problemini çözer. cURL'ün basitliğine alışık olanlar için tanıdık bir yaklaşım sunar.
CurlDotNet IronPDF ile kullanılabilir mi?
Evet, CurlDotNet, .NET uygulamalarında PDF oluşturma iş akışlarının bir parçası olarak HTTP istekleri yapma kolaylığını artırmak için IronPDF ile birlikte kullanılabilir.
CurlDotNet yeni başlayanlar için uygun mudur?
Evet, CurlDotNet, yeni başlayanlar için tanıdık bir komut satırı tarzı arayüzüyle .NET ve HTTP isteklerine yeni olanlar için öğrenme eğrisini hafifletir.
CurlDotNet ile IronPDF kullanmanın avantajları nelerdir?
CurlDotNet ile IronPDF kullanmak, HTTP isteklerini hızlandırırken PDF'leri oluşturmayı sağlar, verimliliği artırır ve her iki aracın güçlü yönlerinden yararlanır.
CurlDotNet hakkında daha fazla bilgiyi nereden öğrenebilirim?
CurlDotNet hakkında daha fazla bilgiyi Jacob Mellor'un Medium'daki makalesini ziyaret ederek öğrenebilirsiniz. Makale, kütüphanenin cURL komutları ile .NET kodu arasındaki boşluğu nasıl kapattığını detaylı bir şekilde anlatır.




