跳過到頁腳內容
.NET幫助

銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET

對於開發者來說,在快速命令行工具腳本和健壯的 .NET 程式碼之間進行導航時,通常的摩擦點在於將一個工作中的 cURL 命令轉換為 C# 中一個正確的 HTTP 請求。 Jacob Mellor 已經採用CurlDotNet來彌合這個差距,這是一個為了將 cURL 的熟悉度帶入 .NET 生態系統而創建的程式庫。

透過將該工具與 Iron Software 產品如 IronPDFIronXL 結合使用,您可以構建強大的管道,通過複雜的 API 調用獲取數據並立即生成專業報告。 在本文中,我們將看看一些範例,這些工具可以協作將您的專案提升到一個新的水平。

CurlDotNet 是什麼?

CurlDotNet 是業界標準的 curl 工具的一個純 C# .NET 實現。 與依賴原生依賴或 libcurl 的包裝器不同,這個程式庫提供了一個 100% 的管理解決方案,完全支持 Windows、Linux、macOS 等。 它確保與標準客戶端相同的行為,允許您將 API 文檔中的 bash 命令直接貼到您的程式碼中。

快速開始和安裝

要開始使用,只需在您的項目目錄中運行以下命令:

dotnet add package curldotnet

這會安裝 CurlDotNet 包,讓您可以訪問可隨時使用的處理網絡請求的配方,而無需 HttpClient 配置的開銷。

使用 Curl-Dot-Net Curl 命令

該程式庫擅長解析字串值命令。 如果您有來自 GitHub API 頁面或內部文檔的工作中的 curl https 字串,您可以直接執行它。

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

.NET 程式碼 Curl DotNet 輸出

我們的第一個 Curl DotNet 命令的輸出

對於那些偏好結構化方法的人來說,流暢構建器提供了一個整潔的 API 來設置標頭、curl 選項和訪問令牌。

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

這種靈活性可以內部處理 TLS 握手機制、速率限制和錯誤處理,模仿 curl 執行檔的默認行為。

與 .NET Framework 中的 Iron Software 的集成

當您將 CurlDotNet 的輸出傳送到 Iron Software 工具時,真正的力量就被釋放。 由於 CurlDotNet 處理傳輸層(獲取 JSON、文件或 HTML),Iron Software 產品可以專注於處理這些內容。

場景:從 API 數據生成 PDF 報告

想像一下,您需要從一個安全的 URL 下載用戶數據並生成 PDF 報告。 API 要求一個特定的 bash 簽名,這很難用 HttpClient 來複制,但無法用 curl 命令輕松做到。

步驟 1:使用 Curl-Dot-Net 獲取數據

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

步驟 2:使用 IronPDF 生成 PDF

IronPDF 是一個強大的程式庫,旨在將 HTML、CSS、JavaScript圖像 渲染為高保真度的 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");
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");
$vbLabelText   $csharpLabel

輸出

使用 CurlDotNet 和 IronPDF 將測試網站轉換為 PDF

場景:將 JSON 導出到 Excel

如果您的應用程序消耗一個 JSON 資料源,您可以使用 CurlDotNet 的測試功能來獲取並使用 IronXL 來導出。

步驟 1:用 Curl-Dot-Net 獲取 JSON 數據

我們使用流暢構建器來編寫乾淨的 .NET 程式碼以獲取 JSON 資料源:

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

步驟 2:使用 IronXL 加載並導出到 Excel

IronXL 是一個全面的 .NET 程式庫,設計用於處理 讀取寫入 和操作 Excel 文件格式(.xlsx、.xls、.csv) 的各個方面。 重要的是,它不需要在服務器或客戶機上安裝 Microsoft Office,這使得它非常適用於跨平台的 Linux 和 CI CD 環境。 關鍵功能包括完全支持創建圖表、應用公式 和設置單元格樣式。

有了原始 JSON 數據現在轉為字串,IronXL 可以用來解析它並構建電子表格。

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

輸出 Excel 文件

使用 CurlDotNet 和 IronExcel 創建的 Excel 文件

為什麼要組合使用這兩者?

1.跨平台一致性: CurlDotNetIronSoftware 產品支持 Windows、Linux 和 macOS。 這對於在 Microsoft Azure 或 AWS Lambda 等運行時環境上運行的 CI CD 管道至關重要。

2.程式碼生成: 開發者通常會得到以 bash 或 shell 格式生成的程式碼片段。 curl-dot-net 允許您直接使用這些片段,而 Iron Software 處理文件操作的繁重工作。

3.無原生依賴: 因為 CurlDotNet 是一個純 C# 的實現,您可以避免常見的與不同操作系統版本鏈接外部 C++ 庫或 libcurl 二進制檔案相關的問題。

結論

Jacob Mellor 為 DotNet 社群提供了一個重要的工具。 通過允許開發者在 .NET Framework 和 Core 應用程序中使用熟悉的 curl 選項,CurlDotNet 簡化了 http 請求的過程。 當與 Iron Software 結合使用時,您可以創建無縫的工作流程:以 curl 的精確度提取數據,並用 IronPDF 或 IronXL 的強大功能處理這些數據。

如果您遇到問題,請務必在GitHub 頁面上報告錯誤,以幫助改進對每個用戶的支持。

常見問題解答

什麼是 CurlDotNet?

CurlDotNet 是 Jacob Mellor 創建的函式庫,將 cURL 的功能帶入 .NET 生態系統,讓開發人員可以輕鬆地將 cURL 指令翻譯成 .NET 程式碼。

CurlDotNet 如何幫助開發人員?

CurlDotNet 透過簡化在 C# 中將 cURL 指令列作業翻譯為 HTTP 請求的流程來幫助開發人員,讓他們更容易將指令列工具腳本整合到強大的 .NET 應用程式中。

CurlDotNet 能解決什麼問題?

CurlDotNet 可解決開發人員在嘗試將運作中的 cURL 指令轉換為 C# 中正確的 HTTP 請求時所遇到的摩擦問題。它為那些習慣了 cURL 簡單性的人提供了一種熟悉的方法。

CurlDotNet 可以與 IronPDF 搭配使用嗎?

是的,CurlDotNet 可與 IronPDF 一同使用,以提高 HTTP 請求的簡易性,作為 .NET 應用程式中 PDF 生成工作流程的一部分。

CurlDotNet 適合初學者嗎?

是的,CurlDotNet 適合初學者使用,因為它提供了熟悉的命令列式介面,可以減輕初學者對 .NET 和 HTTP 請求的學習曲線。

使用 CurlDotNet 與 IronPDF 有什麼好處?

將 CurlDotNet 與 IronPDF 搭配使用,可讓開發人員在生成 PDF 的同時簡化 HTTP 請求,提高效率並發揮兩種工具的優勢。

我可以在哪裡瞭解更多關於 CurlDotNet 的資訊?

您可以造訪 Jacob Mellor 在 Medium 上發表的文章,瞭解更多關於 CurlDotNet 的資訊,其中詳細介紹了該函式庫如何縮短 cURL 指令與 .NET 程式碼之間的距離。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me