Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
RestSharp es una popular biblioteca .NET de código abierto para realizar peticiones HTTP en C#. Simplifica el proceso de trabajar con API pacíficas, proporcionando una forma sencilla y flexible de comunicarse con los servicios web. En esta composición, exploraremos las características cruciales de RestSharp y IronPDF y le demostrará cómo puede calcular el coste de los datos e inducir un PDF.
En las aplicaciones modernas de varios niveles, los distintos servicios tienen que comunicarse entre sí con mucha frecuencia y RestSharp ofrece una forma sencilla y eficaz, encapsulando todas las complejidades. Esto simplifica enormemente el proceso de desarrollo de software.
RestSharp está disponible como NuGet y puede instalarse en su diseño C#. Para ello se puede utilizar la consola del gestor de paquetes NuGet o la aplicación Visual Studio Interfaz de usuario del gestor de paquetes NuGet.
Install-Package RestSharp
Comencemos con un ejemplo sencillo de realizar una solicitud GET a una API RESTful utilizando RestSharp. Supongamos que queremos recuperar información de una API pública de ASP.NET core que devuelve datos de usuario:
using RestSharp;
namespace rest_sharp_demo;
class Program
{
static void Main()
{
// Crear una instancia RestClient
var baseUrl = "https://jsonplaceholder.typicode.com/users";
RestClientOptions options = new RestClientOptions(baseUrl)
{UseDefaultCredentials = true};
var client = new RestClient(options);
// Crear una RestRequest para el método GET
var request = new RestRequest();
// Ejecutar la solicitud y obtener la respuesta
var response = client.Get(request);
// Comprobar si la solicitud se ha realizado correctamente
if (response.IsSuccessful)
{
// Imprimir el contenido del cuerpo de la respuesta
Console.WriteLine(response.Content);
}
else
{
// Gestionar el error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
public void LogData(string msg)
{
Console.WriteLine(msg)
}
}
using RestSharp;
namespace rest_sharp_demo;
class Program
{
static void Main()
{
// Crear una instancia RestClient
var baseUrl = "https://jsonplaceholder.typicode.com/users";
RestClientOptions options = new RestClientOptions(baseUrl)
{UseDefaultCredentials = true};
var client = new RestClient(options);
// Crear una RestRequest para el método GET
var request = new RestRequest();
// Ejecutar la solicitud y obtener la respuesta
var response = client.Get(request);
// Comprobar si la solicitud se ha realizado correctamente
if (response.IsSuccessful)
{
// Imprimir el contenido del cuerpo de la respuesta
Console.WriteLine(response.Content);
}
else
{
// Gestionar el error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
public void LogData(string msg)
{
Console.WriteLine(msg)
}
}
Imports RestSharp
Namespace rest_sharp_demo
Friend Class Program
Shared Sub Main()
' Crear una instancia RestClient
Dim baseUrl = "https://jsonplaceholder.typicode.com/users"
Dim options As New RestClientOptions(baseUrl) With {.UseDefaultCredentials = True}
Dim client = New RestClient(options)
' Crear una RestRequest para el método GET
Dim request = New RestRequest()
' Ejecutar la solicitud y obtener la respuesta
Dim response = client.Get(request)
' Comprobar si la solicitud se ha realizado correctamente
If response.IsSuccessful Then
' Imprimir el contenido del cuerpo de la respuesta
Console.WriteLine(response.Content)
Else
' Gestionar el error
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
Public Sub LogData(ByVal msg As String)
Console.WriteLine(msg)
End Sub
End Class
End Namespace
RestSharp también admite solicitudes y respuestas asíncronas mediante los métodos de la API async.
RestSharp proporciona métodos prácticos para deserializar el contenido de la respuesta en objetos C#. Vamos a ampliar nuestro ejemplo para deserializar los datos de respuesta JSON en una lista de objetos de usuario:
// Deserializar la respuesta JSON en una lista de objetos Usuario
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Información de salida del usuario
foreach (var user in users)
{
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email:{user.Email}");
}
// Deserializar la respuesta JSON en una lista de objetos Usuario
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Información de salida del usuario
foreach (var user in users)
{
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email:{user.Email}");
}
' Deserializar la respuesta JSON en una lista de objetos Usuario
Dim users = JsonSerializer.Deserialize(Of List(Of User))(response.Content)
' Información de salida del usuario
For Each user In users
Console.WriteLine($"User ID: {user.Id}, Name: {user.Name}, Email:{user.Email}")
Next user
En este ejemplo, hemos definido una clase Usuario con propiedades correspondientes a los campos JSON. Hemos utilizado "JsonSerializer.Deserialize" del namespace "System.Text.Json.Serialization".
public class User
{
[JsonPropertyName("company")]public Company Company { get; set; }
[JsonPropertyName("id")]public int Id { get; set; }
[JsonPropertyName("phone")]public string Phone { get; set; }
[JsonPropertyName("website")]public string Website { get; set; }
[JsonPropertyName("name")]public string Name { get; set; }
[JsonPropertyName("username")]public string Username { get; set; }
[JsonPropertyName("email")]public string Email { get; set; }
[JsonPropertyName("address")]public Address Address { get; set; }
}
public class User
{
[JsonPropertyName("company")]public Company Company { get; set; }
[JsonPropertyName("id")]public int Id { get; set; }
[JsonPropertyName("phone")]public string Phone { get; set; }
[JsonPropertyName("website")]public string Website { get; set; }
[JsonPropertyName("name")]public string Name { get; set; }
[JsonPropertyName("username")]public string Username { get; set; }
[JsonPropertyName("email")]public string Email { get; set; }
[JsonPropertyName("address")]public Address Address { get; set; }
}
Public Class User
<JsonPropertyName("company")>
Public Property Company() As Company
<JsonPropertyName("id")>
Public Property Id() As Integer
<JsonPropertyName("phone")>
Public Property Phone() As String
<JsonPropertyName("website")>
Public Property Website() As String
<JsonPropertyName("name")>
Public Property Name() As String
<JsonPropertyName("username")>
Public Property Username() As String
<JsonPropertyName("email")>
Public Property Email() As String
<JsonPropertyName("address")>
Public Property Address() As Address
End Class
Todos los userId y nombres se muestran en la salida.
El código completo está disponible en git aquí.
RestSharp soporta el envío de peticiones con cuerpo XML o JSON. Los métodos AddJsonBody o AddXmlBody de la instancia RestRequest pueden utilizarse para añadir un cuerpo JSON o XML. RestSharp establecerá el tipo de contenido automáticamente.
RestSharp maneja respuestas JSON o XML automáticamente.
//utilizando RestSharp;
// Serializar el objeto usuario a JSON
var jsonBodyString = JsonSerializer.Serialize(newUser);
// Cree una RestRequest para el método POST con los datos de la solicitud JSON
var requestData = new RestRequest().AddJsonBody(jsonBodyString);
var response=client.ExecutePost(requestData);
//utilizando RestSharp;
// Serializar el objeto usuario a JSON
var jsonBodyString = JsonSerializer.Serialize(newUser);
// Cree una RestRequest para el método POST con los datos de la solicitud JSON
var requestData = new RestRequest().AddJsonBody(jsonBodyString);
var response=client.ExecutePost(requestData);
'utilizando RestSharp;
' Serializar el objeto usuario a JSON
Dim jsonBodyString = JsonSerializer.Serialize(newUser)
' Cree una RestRequest para el método POST con los datos de la solicitud JSON
Dim requestData = (New RestRequest()).AddJsonBody(jsonBodyString)
Dim response=client.ExecutePost(requestData)
RestSharp también admite el envío de datos en el cuerpo de la solicitud, lo que es habitual al crear o actualizar recursos. Modifiquemos nuestro ejemplo para demostrar una API de solicitud POST:
using RestSharp;
var client = new RestClient("https://jsonplaceholder.typicode.com/users");
// Nuevo objeto usuario
var newUser = new User
{
Name = "John Doe",
Email = "john.doe@example.com"
};
// Serializar el objeto usuario a JSON
var jsonBody = JsonSerializer.Serialize(newUser);
// Crear una RestRequest para el método POST con el cuerpo de la petición JSON
var request = new RestRequest().AddJsonBody(jsonBody);
if (response.IsSuccessful)
{
// Imprimir el contenido de la respuesta
Console.WriteLine(response.Content);
}
else
{
Console.WriteLine($"Error: {response.ErrorMessage}");
}
using RestSharp;
var client = new RestClient("https://jsonplaceholder.typicode.com/users");
// Nuevo objeto usuario
var newUser = new User
{
Name = "John Doe",
Email = "john.doe@example.com"
};
// Serializar el objeto usuario a JSON
var jsonBody = JsonSerializer.Serialize(newUser);
// Crear una RestRequest para el método POST con el cuerpo de la petición JSON
var request = new RestRequest().AddJsonBody(jsonBody);
if (response.IsSuccessful)
{
// Imprimir el contenido de la respuesta
Console.WriteLine(response.Content);
}
else
{
Console.WriteLine($"Error: {response.ErrorMessage}");
}
Imports RestSharp
Private client = New RestClient("https://jsonplaceholder.typicode.com/users")
' Nuevo objeto usuario
Private newUser = New User With {
.Name = "John Doe",
.Email = "john.doe@example.com"
}
' Serializar el objeto usuario a JSON
Private jsonBody = JsonSerializer.Serialize(newUser)
' Crear una RestRequest para el método POST con el cuerpo de la petición JSON
Private request = (New RestRequest()).AddJsonBody(jsonBody)
If response.IsSuccessful Then
' Imprimir el contenido de la respuesta
Console.WriteLine(response.Content)
Else
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
En este ejemplo, creamos un nuevo dato de objeto User, lo serializamos a JSON, y lo incluimos en el cuerpo de la petición usando el método AddJsonBody. El servidor recibe los datos JSON y procesa la solicitud en consecuencia
RestSharp también admite el envío de solicitudes con autenticación. Las RestClientOptions pueden incluir parámetros de autenticación.
var options = new RestClientOptions("https://auth.net"){Authenticator = new HttpBasicAuthenticator(_clientId, _clientSecret)};
var options = new RestClientOptions("https://auth.net"){Authenticator = new HttpBasicAuthenticator(_clientId, _clientSecret)};
Dim options = New RestClientOptions("https://auth.net") With {.Authenticator = New HttpBasicAuthenticator(_clientId, _clientSecret)}
Aquí estamos utilizando la autenticación básica clientId secret que se envía en cada solicitud.
RestSharp puede gestionar los errores que se producen durante las solicitudes URL, como los errores de tiempo de espera, autenticación o autorización. RestSharp no lanza una excepción si la petición falla automáticamente. Debe configurarse manualmente.
Se pueden realizar las siguientes configuraciones de tratamiento de errores.
var restClentOptions = new RestClientOptions(url) { ThrowOnAnyError = true };
var client = new RestClient(restClentOptions);
var restClentOptions = new RestClientOptions(url) { ThrowOnAnyError = true };
var client = new RestClient(restClentOptions);
Dim restClentOptions = New RestClientOptions(url) With {.ThrowOnAnyError = True}
Dim client = New RestClient(restClentOptions)
IronPDF es una biblioteca PDF en C# de Iron Software que ayuda a leer y generar documentos PDF. Puede convertir fácilmente documentos formateados con información de estilo a PDF. IronPDF puede generar fácilmente PDFs a partir de contenido HTML, puede descargar el HTML desde la URL y luego generar PDFs
Install-Package IronPdf
Para integrar IronPDF en su proyecto Selenium RestSharp utilizando el gestor de paquetes NuGet, siga estos pasos:
Acepte cualquier solicitud de acuerdo de licencia.
Si desea incluir IronPDF en su proyecto a través de la consola del gestor de paquetes, ejecute el siguiente comando en la consola del gestor de paquetes:
Install-Package IronPdf
Buscará e instalará IronPDF en su proyecto.
Para obtener una descripción detallada de IronPDF, incluidas sus características, compatibilidad y opciones de descarga adicionales, visite la página de IronPDF en el sitio web de NuGet en https://www.nuget.org/packages/IronPdf.
Como alternativa, puede incorporar IronPDF directamente a su proyecto utilizando su archivo dll. Descargue el archivo ZIP que contiene la DLL desde aquí enlace. Descomprímelo e incluye la DLL en tu proyecto.
Ahora vamos a obtener todos los usuarios y generar un informe PDF utilizando la cadena HTML y el generador IronPDF
using System.Text.Json;
using System.Text.Json.Serialization;
using RestSharp;
namespace rest_sharp_demo;
class Program
{
static void Main()
{
// Crear un RestClient
var baseUrl = "https://jsonplaceholder.typicode.com/users";
RestClientOptions options = new RestClientOptions(baseUrl) { UseDefaultCredentials = true };
var client = new RestClient(options);
// Crear una RestRequest para el método GET
var request = new RestRequest();
// Ejecutar la solicitud y obtener la respuesta
var response = client.Get(request);
// Comprobar si la solicitud se ha realizado correctamente
if (response.IsSuccessful)
{
// Deserializar la respuesta JSON en una lista de objetos Usuario
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Generar Pdf
var html = GetHtml(users);
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(html);
PDF.SaveAs("UsersReport.pdf");
}
else
{
// Gestionar el error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
private static string GetHtml(List<User>? users)
{
string header = $@"
<html>
<head><title>Users List</title></head>
<body>
";
var footer = @"
</body>
</html>";
var htmlContent = header;
foreach (var user in users)
{
htmlContent += $@"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
";
}
htmlContent += footer;
return htmlContent;
}
}
using System.Text.Json;
using System.Text.Json.Serialization;
using RestSharp;
namespace rest_sharp_demo;
class Program
{
static void Main()
{
// Crear un RestClient
var baseUrl = "https://jsonplaceholder.typicode.com/users";
RestClientOptions options = new RestClientOptions(baseUrl) { UseDefaultCredentials = true };
var client = new RestClient(options);
// Crear una RestRequest para el método GET
var request = new RestRequest();
// Ejecutar la solicitud y obtener la respuesta
var response = client.Get(request);
// Comprobar si la solicitud se ha realizado correctamente
if (response.IsSuccessful)
{
// Deserializar la respuesta JSON en una lista de objetos Usuario
var users = JsonSerializer.Deserialize<List<User>>(response.Content);
// Generar Pdf
var html = GetHtml(users);
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHtmlAsPdf(html);
PDF.SaveAs("UsersReport.pdf");
}
else
{
// Gestionar el error
Console.WriteLine($"Error: {response.ErrorMessage}");
}
}
private static string GetHtml(List<User>? users)
{
string header = $@"
<html>
<head><title>Users List</title></head>
<body>
";
var footer = @"
</body>
</html>";
var htmlContent = header;
foreach (var user in users)
{
htmlContent += $@"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
";
}
htmlContent += footer;
return htmlContent;
}
}
Imports System.Text.Json
Imports System.Text.Json.Serialization
Imports RestSharp
Namespace rest_sharp_demo
Friend Class Program
Shared Sub Main()
' Crear un RestClient
Dim baseUrl = "https://jsonplaceholder.typicode.com/users"
Dim options As New RestClientOptions(baseUrl) With {.UseDefaultCredentials = True}
Dim client = New RestClient(options)
' Crear una RestRequest para el método GET
Dim request = New RestRequest()
' Ejecutar la solicitud y obtener la respuesta
Dim response = client.Get(request)
' Comprobar si la solicitud se ha realizado correctamente
If response.IsSuccessful Then
' Deserializar la respuesta JSON en una lista de objetos Usuario
Dim users = JsonSerializer.Deserialize(Of List(Of User))(response.Content)
' Generar Pdf
Dim html = GetHtml(users)
Dim Renderer = New ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf(html)
PDF.SaveAs("UsersReport.pdf")
Else
' Gestionar el error
Console.WriteLine($"Error: {response.ErrorMessage}")
End If
End Sub
'INSTANT VB WARNING: Nullable reference types have no equivalent in VB:
'ORIGINAL LINE: private static string GetHtml(List<User>? users)
Private Shared Function GetHtml(ByVal users As List(Of User)) As String
Dim header As String = $"
<html>
<head><title>Users List</title></head>
<body>
"
ignore ignore ignore ignore var footer = "
</body>
</html>"
ignore ignore var htmlContent = header
For Each user In users
htmlContent += $"
<h1>{user.Name}</h1>
<p>Username: {user.Username}</p>
<p>Email: {user.Email}</p>
<p>Company: {user.Company}</p>
<p>Phone: {user.Phone}</p>
<p>Website: {user.Website}</p>
<p>Suite: {user.Address.Suite}</p>
<p>Street: {user.Address.Street}</p>
<p>City: {user.Address.City}</p>
<p>Zipcode: {user.Address.Zipcode}</p>
"
ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore
Next user
htmlContent += footer
Return htmlContent
End Function
End Class
End Namespace
El código completo se encuentra en Git aquí.
Aquí estamos generando primero una cadena HTML a partir de la lista de usuarios con todo el formato requerido para los informes. A continuación, utilizamos IronPDF para generar un documento PDF. Utilizamos el método "RenderHtmlAsPdf" para convertir una cadena HTML en un documento PDF. El documento generado es el siguiente:
El documento tiene una pequeña marca de agua para las licencias de prueba y puede eliminarse con una licencia válida.
Para que el código anterior funcione, se necesita una clave de licencia. Esta clave debe colocarse en appsettings.json
"IronPdf.LicenseKey": "your license key"
"IronPdf.LicenseKey": "your license key"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronPdf.LicenseKey": "your license key"
Los desarrolladores disponen de una licencia de prueba para registrarse. aquí y sí, no se requiere tarjeta de crédito para una licencia de prueba. Uno puede proporcionar el ID de correo electrónico y registrarse para una prueba gratuita.
La biblioteca RestSharp simplifica el proceso de trabajar con API RESTful en C#, proporcionando una forma limpia y eficiente de realizar peticiones HTTP y gestionar las respuestas. Tanto si recupera datos con solicitudes GET como si los envía con solicitudes POST, la intuitiva API de RestSharp y sus prácticas funciones la convierten en una valiosa herramienta para los desarrolladores que crean aplicaciones que interactúan con servicios web.
IronPDF ofrece una solución flexible y fácil de usar para generar archivos PDF. Para obtener más información sobre las distintas funciones de IronPDF, visite la documentación página.
perpetua de IronPDF licencia que le ayudará a mejorar sus habilidades de codificación y a cumplir los requisitos de las aplicaciones modernas.
Conocer tanto RestSharp como IronPDF aporta grandes habilidades y los desarrolladores pueden crear aplicaciones modernas.
9 productos API .NET para sus documentos de oficina