Altbilgi içeriğine atla
.NET YARDıM

CLI Basitliği ve .NET'i Birleştirme: IronPDF ile Curl DotNet Kullanımı

Hızlı komut satırı araç skriptleri ile sağlam .NET kodu arasında köprü kurarken, sürtünme genellikle çalışan bir cURL komutu C# içinde doğru bir HTTP isteğine dönüştürmekte yatar. Jacob Mellor, .NET ekosistemine cURL'in aşinalığını getirmek için oluşturulmuş bir kütüphane olan CurlDotNet ile bu boşluğu doldurmuştur.

Bu aracı Iron Software ürünleri IronPDF veya IronXL gibi ürünlerle birleştirerek karmaşık API çağrıları yoluyla veri alıp profesyonel raporlar oluşturabilecek güçlü hatlar oluşturabilirsiniz. Bu yazıda bu araçların projelerinizi bir sonraki seviyeye taşırken nasıl birlikte çalışabileceğiyle ilgili bazı örneklere bakacağız.

CurlDotNet Nedir?

CurlDotNet, endüstri standardı curl aracının saf C# .NET uygulamasıdır. Yerel bağımlılıklara veya libcurl'e dayanan sarmalayıcıların aksine, bu kütüphane, Windows, Linux, macOS ve daha fazla platform için %100 yönetilen bir çözüm sunar. API dokümanlarından bir komutun bash kopyasını doğrudan kodunuza yapıştırmanıza olanak tanıyarak, standart müşteriye aynı davranışı sağlar.

Hızlı Başlangıç ve Yükleme

Başlamak için, proje dizininizde şu komutu çalıştırmanız yeterlidir:

dotnet paket ekle curldotnet

Bu, CurlDotNet paketini kurar ve HttpClient yapılandırmasının getirdiği ek yük olmadan web isteklerini yönetmek için kullanıma hazır tariflere erişim sağlar.

Curl-.NET Curl Komutlarını Kullanma

Kütüphane, dize değer komutlarını ayrıştırmada mükemmeldir. GitHub API sayfası veya dahili belgelerden çalışan bir curl https dizesine sahipseniz, 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)
$vbLabelText   $csharpLabel

.NET Kodu Curl .NET Çıkışı

İlk Curl .NET komutumuz için çıktı

Yapısal bir yaklaşımı tercih edenler için, akıcı oluşturucu, başlıkları, curl seçeneklerini ve erişim tokenlerini ayarlamak için temiz bir API sağlar.

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

Bu esneklik, TLS el sıkışma mekaniği, hız sınırlaması ve hata işlemesini içsel olarak ele alır ve curl çalıştırılabilir dosyasının varsayılan davranışını taklit eder.

Iron Software ile .NET Çerçevesinde Entegrasyon

CurlDotNet'in çıktısını Iron Software araçlarına yönlendirdiğinizde gerçek güç ortaya çıkar. CurlDotNet, taşıma katmanını (JSON, dosyalar veya HTML alma) işlediğinden, Iron Software ürünleri bu içeriği işlemeye odaklanabilir.

Senaryo: API Verilerinden PDF Raporları Oluşturma

Güvenli bir URL'den kullanıcı verilerini indirip, bir PDF raporu oluşturmanız gerektiğini hayal edin. API, HttpClient ile çoğaltılması zor ama curl komutuyla kolay olan bir bash imzası gerektirir.

Adım 1: Curl-.NET ile Veri Alma

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

Adım 2: IronPDF ile PDF Üretin

IronPDF, HTML, CSS, JavaScript ve görüntüleri yüksek kaliteli PDF belgelerine dönüştürmek için tasarlanmış güçlü bir kütüphanedir. Modern web standartları için tam destek sağlar ve başlıklar eklemek ve belirli render ayarlarını yapmak gibi özellikler 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")
$vbLabelText   $csharpLabel

Çıktı

CurlDotNet ve IronPDF kullanarak PDF'ye dönüştürülen test web sitesi

Senaryo: JSON'u Excel'e Aktarma

Uygulamanız bir JSON akışını tüketiyorsa, CurlDotNet'in test yeteneklerini kullanarak alınabilir ve IronXL kullanarak aktarılabilir.

Adım 1: Curl-.NET ile JSON Verisi Alma

Temiz bir .NET kodu için akıcı oluşturucuyu kullanarak JSON akışını alın:

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

Adım 2: IronXL kullanarak Excel'e Yükleyin ve Dışa Aktarın

IronXL, okuma, yazma ve Excel dosya formatlarını işleme (.xlsx, .xls, .csv) tüm yönleriyle ilgilenmek için tasarlanmış kapsamlı bir .NET kütüphanesidir. Özellikle, bu işlevi, sunucu veya istemci makinesinde Microsoft Office yüklü olmadan gerçekleştirir, bu da onu çapraz platform Linux ve CI CD ortamları için ideal hale getirir. Öne çıkan özellikler arasında grafik oluşturma, formüller uygulama ve hücreleri biçimlendirme desteği yer alır.

Şimdi bir dize içinde ham JSON verileri ile, IronXL kullanılarak ayrıştırılabilir ve bir elektronik tablo oluşturulabilir.

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

Çıktı Excel Dosyası

CurlDotNet ve IronExcel ile oluşturulmuş Excel dosyası

Bu Kombinasyon Neden Bu Kadar İyi?

  1. Platformlar Arası Tutarlılık: Hem CurlDotNet hem de Iron Software ürünleri Windows, Linux ve macOS'u destekler. Bu, Microsoft Azure veya AWS Lambda gibi çalıştırma ortamlarında çalışan CI CD hatları için kritiktir.

  2. Kod Oluşturma: Geliştiriciler genellikle bash veya kabuk formatında kod oluşturma parçaları alır. curl-.NET, bu kod parçacıklarını doğrudan kullanmanıza izin verirken, Iron Software belge manipülasyonunun ağır işlerini üstlenir.

  3. Yerli Bağımlılıklar Yok: CurlDotNet, saf bir C# uygulaması olduğu için, farklı işletim sistemi sürümlerinde harici C++ kütüphaneleri veya libcurl bağımlılıklarının bağlanmasıyla ilgili yaygın sorunlardan kaçınırsınız.

Sonuç

Jacob Mellor, .NET topluluğu için hayati bir araç sağlamıştır. Geliştiricilerin .NET Framework ve Core uygulamalarında tanıdık curl seçeneklerini kullanmalarına olanak tanıyarak CurlDotNet, HTTP istek sürecini basitleştirir. Iron Software ile eşleştirildiğinde, sorunsuz bir iş akışı oluşturabilirsiniz: curl hassasiyetiyle veri alın ve IronPDF veya IronXL gücüyle işleyin.

Sorunlar yaşarsanız, tüm kullanıcılar için desteği iyileştirmek amacıyla GitHub sayfasında hataları bildirdiğinizden emin olun.

Sıkça Sorulan Sorular

CurlDotNet nedir?

CurlDotNet, cURL işlevselliğini .NET ekosistemine getirmek için Jacob Mellor tarafından oluşturulan bir kütüphanedir, böylece geliştiricilerin cURL komutlarını kolayca .NET koduna çevirmelerine olanak tanır.

CurlDotNet geliştiricilere nasıl fayda sağlar?

CurlDotNet, cURL komut satırı işlemlerini C# içinde HTTP taleplerine çevirmeyi basitleştirerek geliştiricilere fayda sağlar, böylece komut satırı araç betiklerini sağlam .NET uygulamalarına entegre etmeyi kolaylaştırır.

CurlDotNet hangi problemi çözer?

CurlDotNet, C# içinde çalışan cURL komutlarını uygun HTTP taleplerine dönüştürme sırasında geliştiricilerin karşılaştığı sürtünme problemini çözer. cURL'ün basitliğine aşina olanlar için tanıdık bir yaklaşım sunar.

CurlDotNet, IronPDF ile kullanılabilir mi?

Evet, CurlDotNet, IronPDF ile birlikte, .NET uygulamaları içinde PDF oluşturma iş akışları kapsamında HTTP taleplerini gerçekleştirmeyi kolaylaştırmak için kullanılabilir.

CurlDotNet yeni başlayanlar için uygun mu?

Evet, CurlDotNet yeni başlayanlar için uygun çünkü yeni başlayanlar için .NET ve HTTP taleplerini öğrenme eğrisini kolaylaştıran tanıdık bir komut satırı tarzı arayüz sunar.

CurlDotNet kullanmanın IronPDF ile birlikte kullanmanın faydaları nelerdir?

CurlDotNet'i IronPDF ile kullanmak, PDF'ler oluştururken HTTP taleplerini kolaylaştırarak verimliliği artırır ve her iki aracın da güçlü yönlerinden yararlanmanıza imkan tanır.

CurlDotNet hakkında daha fazla bilgiyi nereden edinebilirim?

Jacob Mellor'un cURL komutları ile .NET kodu arasındaki boşluğu nasıl köprülediğine dair detaylı içerikler sunan Medium'daki makalesini ziyaret ederek CurlDotNet hakkında daha fazla bilgi edinebilirsiniz.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara