Saltar al pie de página
.NET AYUDA

Bridging CLI Simplicity & .NET : Uso de Curl DotNet con IronPDF

Para los desarrolladores que navegan por la brecha entre los rápidos scripts de herramientas de línea de comandos y el robusto código .NET, la fricción a menudo radica en traducir un comando cURL de trabajo en una solicitud HTTP adecuada dentro de C#. Jacob Mellor ha llenado este vacío con CurlDotNet, una biblioteca creada para llevar la familiaridad de cURL al ecosistema .NET.

Combinando esta herramienta con productos de Iron Software como IronPDF o IronXL, podrá crear potentes canalizaciones que obtengan datos a través de complejas llamadas API y generen inmediatamente informes profesionales. En este artículo veremos algunos ejemplos en los que estas herramientas pueden trabajar juntas para llevar tus proyectos al siguiente nivel.

¿Qué es CurlDotNet?

CurlDotNet es una implementación puramente en C# .NET de la herramienta curl estándar del sector. A diferencia de las envolturas que se basan en dependencias nativas o libcurl, esta biblioteca ofrece una solución 100% gestionada con soporte completo para Windows, Linux, macOS y más. Garantiza el mismo comportamiento que el cliente estándar, permitiéndole simplemente pegar una copia en bash de un comando de los documentos de la API directamente en su código.

Inicio rápido e instalación

Para empezar, simplemente ejecute el siguiente comando en el directorio de su proyecto:

dotnet añadir paquete curldotnet

Esto instala el paquete CurlDotNet, dándole acceso a recetas listas para usar para manejar peticiones web sin la sobrecarga de la configuración de HttpClient.

Uso de los comandos Curl de Curl-Dot-Net

La biblioteca destaca en el análisis sintáctico de comandos de valor de cadena. Si dispone de una cadena https curl de una página API de GitHub o de documentos internos, puede ejecutarla directamente.

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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

.NET Código Curl DotNet Salida

Salida de nuestro primer comando Curl DotNet

Para aquellos que prefieren un enfoque estructurado, el constructor fluido proporciona una API limpia para establecer cabeceras, opciones de curl y tokens de acceso.

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();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Esta flexibilidad maneja internamente la mecánica del protocolo TLS, la limitación de velocidad y la gestión de errores, imitando el comportamiento predeterminado del ejecutable curl.

Integración con IronSoftware en .NET Framework

La verdadera potencia se despliega cuando se canaliza la salida de CurlDotNet a las herramientas de Iron Software. Dado que CurlDotNet se encarga de la capa de transporte (obtención de JSON, archivos o HTML), los productos de IronSoftware pueden centrarse en procesar ese contenido.

Escenario: Generación de informes en PDF a partir de datos de API

Imagine que necesita descargar los datos de un usuario desde una URL segura y generar un informe en PDF. La API requiere una firma bash específica que es difícil de replicar con HttpClient pero fácil con un comando curl.

Paso 1: Obtener datos con 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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Paso 2: Generar PDF con IronPDF

IronPDF es una potente biblioteca diseñada para convertir HTML, CSS, JavaScript y imágenes en documentos PDF de alta fidelidad. Es totalmente compatible con los estándares web modernos e incluye funciones como la adición de encabezados, pies de página y la configuración de opciones de representación específicas.

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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Resultado

Sitio web de prueba convertido a PDF mediante CurlDotNet y IronPDF

Escenario: Exportación de JSON a Excel

Si su aplicación consume una fuente JSON, puede obtenerla mediante las funciones de prueba de CurlDotNet y exportarla con IronXL.

Paso 1: Obtener datos JSON con Curl-Dot-Net

Utilizamos el constructor fluido para obtener código .NET limpio para obtener la fuente 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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Paso 2: Cargar y exportar a Excel con IronXL

IronXL es una completa biblioteca .NET diseñada para manejar todos los aspectos de lectura, escritura y manipulación de formatos de archivo Excel (.xlsx, .xls, .csv). Y lo que es más importante, lo hace sin necesidad de tener Microsoft Office instalado en el servidor o en la máquina cliente, por lo que es ideal para entornos Linux multiplataforma y CI CD. Entre las principales características se incluye la compatibilidad total con la creación de gráficos, aplicación de fórmulas y estilización de celdas.

Con los datos JSON sin procesar ahora en una cadena, IronXL puede utilizarse para analizarlos y crear una hoja de cálculo.

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)}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Archivo de Excel de salida

Archivo Excel creado con CurlDotNet e IronExcel

¿Por qué esta combinación?

  1. Coherencia entre plataformas: Tanto CurlDotNet como IronSoftware son compatibles con Windows, Linux y macOS. Esto es fundamental para las canalizaciones de CD de CI que se ejecutan en entornos de tiempo de ejecución como Microsoft Azure o AWS Lambda.

  2. Generación de código: Los desarrolladores suelen recibir fragmentos de generación de código en formato bash o shell. curl-dot-net le permite utilizar estos fragmentos directamente, mientras que IronSoftware se encarga del trabajo pesado de manipulación de documentos.

  3. Sin dependencias nativas: Dado que CurlDotNet es una implementación en C# puro, se evitan los problemas habituales asociados a la vinculación de bibliotecas C++ externas o binarios libcurl en diferentes versiones del sistema operativo.

Conclusión

Jacob Mellor ha proporcionado una herramienta vital para la comunidad DotNet. CurlDotNet simplifica el proceso de solicitud http al permitir a los desarrolladores utilizar las opciones de curl habituales en las aplicaciones .NET Framework y Core. Cuando se combina con Iron Software, puede crear un flujo de trabajo perfecto: obtenga datos con la precisión de curl y procéselos con la potencia de IronPDF o IronXL.

Si tienes algún problema, no dudes en informar de ellos en la página GitHub para ayudar a mejorar el soporte a todos los usuarios.

Preguntas Frecuentes

¿Qué es CurlDotNet?

CurlDotNet es una biblioteca creada por Jacob Mellor para llevar la funcionalidad de cURL al ecosistema .NET, permitiendo a los desarrolladores traducir fácilmente comandos cURL a código .NET.

¿Cómo ayuda CurlDotNet a los desarrolladores?

CurlDotNet ayuda a los desarrolladores simplificando el proceso de traducción de operaciones de línea de comandos cURL en solicitudes HTTP dentro de C#, lo que facilita la integración de scripts de herramientas de línea de comandos en aplicaciones .NET robustas.

¿Qué problema resuelve CurlDotNet?

CurlDotNet resuelve el problema de fricción al que se enfrentan los desarrolladores cuando intentan convertir comandos cURL que funcionan en peticiones HTTP adecuadas en C#. Ofrece un enfoque familiar para aquellos acostumbrados a la simplicidad de cURL.

¿Se puede utilizar CurlDotNet con IronPDF?

Sí, CurlDotNet puede utilizarse junto con IronPDF para facilitar la realización de solicitudes HTTP como parte de los flujos de trabajo de generación de PDF en aplicaciones .NET.

¿Es CurlDotNet adecuado para principiantes?

Sí, CurlDotNet es adecuado para principiantes, ya que proporciona una interfaz familiar de estilo de línea de comandos que facilita la curva de aprendizaje para los nuevos en .NET y las solicitudes HTTP.

¿Cuáles son las ventajas de utilizar CurlDotNet con IronPDF?

El uso de CurlDotNet con IronPDF permite a los desarrolladores agilizar las solicitudes HTTP mientras generan archivos PDF, mejorando la eficiencia y aprovechando los puntos fuertes de ambas herramientas.

¿Dónde puedo obtener más información sobre CurlDotNet?

Puede obtener más información sobre CurlDotNet visitando el artículo de Jacob Mellor en Medium, que ofrece información detallada sobre cómo la biblioteca salva las distancias entre los comandos cURL y el código .NET.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más