Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
Codificación URL y decodificación son técnicas utilizadas en C# para garantizar la transmisión segura de datos dentro de las URLs. En C#, estas operaciones son comunes cuando se trata de aplicaciones web, llamadas API, o cualquier escenario donde los datos necesitan ser pasados a través de Internet de forma segura y fiable. En este artículo, exploraremos el método de codificación de URL y la biblioteca IronPDF.
Cuando codificas una URL, cambias sus caracteres a una forma que puede enviarse con seguridad a través de Internet, evitando cualquier malentendido. Esto se debe a que las URL sólo pueden enviarse por Internet utilizando el juego de caracteres ASCII. Los caracteres que no forman parte de este conjunto, o que tienen significados especiales en las URL (como espacios, caracteres ampersand y signos de igualdad), deben representarse utilizando codificación en porcentaje (por ejemplo, los espacios se convierten en %20). C# proporciona métodos integrados para realizar esta tarea.
La descodificación de URL transforma los caracteres codificados a su estado original al llegar a su destino. Esto es esencial para que la aplicación receptora entienda y procese correctamente los datos según lo previsto. La descodificación devuelve los caracteres codificados porcentualmente a sus símbolos originales, con lo que los datos vuelven a ser legibles y utilizables.
En C#, hay varias maneras de realizar la codificación URL, cada una adecuada para diferentes escenarios. Estos métodos se encuentran principalmente dentro de los espacios de nombres System.Web y System.Net, ofreciendo a los desarrolladores flexibilidad en cómo codifican las URL. He aquí un breve resumen de los métodos disponibles:
Método HttpUtility.UrlEncode (System.Web): Este es quizás el método más utilizado para codificar URL en una aplicación web. Convierte los caracteres a un formato codificado porcentualmente, lo que hace que la cadena sea segura para su transmisión a través de la URL. Es especialmente útil en proyectos ASP.NET para codificar cadenas de consulta y parámetros de formularios.
Método HttpUtility.UrlPathEncode (System.Web): A diferencia de UrlEncode, UrlPathEncode está diseñado específicamente para codificar la parte del camino de una URL, dejando la cadena de consulta sin cambios. Es importante tener en cuenta que este método no codifica toda la URL, sino la parte de la ruta, lo que garantiza la conservación de la estructura jerárquica de la URL.
Método Uri.EscapeUriString (System): Este método está diseñado para escapar cadenas URI, convirtiendo todos los caracteres que no están permitidos en un URI en sus equivalentes codificados en porcentaje. Sin embargo, no codifica ciertos caracteres, como la barra (/) y el signo de interrogación (?), porque se consideran caracteres URI válidos.
Método Uri.EscapeDataString (System): Este método está diseñado para codificar una cadena para ser utilizada en una parte de consulta de un URI. Codifica todos los caracteres excepto los caracteres no reservados definidos en RFC 3986. Es más agresivo que EscapeUriString, asegurando que los datos estén codificados de manera segura para la transmisión dentro de URLs.
Vamos a entender los tres primeros métodos de codificación descritos anteriormente, y su funcionamiento mediante la comprensión de sus ejemplos de código.
using System;
using System.Web;
class Program
{
static void Main()
{
string originalPath = "/api/search/Hello World!";
string encodedPath = UrlEncode(originalPath);
Console.WriteLine("Original Path: " + originalPath);
Console.WriteLine("Encoded Path: " + encodedPath);
}
public static string UrlEncode(string originalString)
{
return HttpUtility.UrlEncode(originalString);
}
}
using System;
using System.Web;
class Program
{
static void Main()
{
string originalPath = "/api/search/Hello World!";
string encodedPath = UrlEncode(originalPath);
Console.WriteLine("Original Path: " + originalPath);
Console.WriteLine("Encoded Path: " + encodedPath);
}
public static string UrlEncode(string originalString)
{
return HttpUtility.UrlEncode(originalString);
}
}
Imports System
Imports System.Web
Friend Class Program
Shared Sub Main()
Dim originalPath As String = "/api/search/Hello World!"
Dim encodedPath As String = UrlEncode(originalPath)
Console.WriteLine("Original Path: " & originalPath)
Console.WriteLine("Encoded Path: " & encodedPath)
End Sub
Public Shared Function UrlEncode(ByVal originalString As String) As String
Return HttpUtility.UrlEncode(originalString)
End Function
End Class
Inclusión de Namespace: El System.Web namespace se incluye al principio del código.
Cadena Original: Definimos una variable de cadena originalString que contiene los caracteres a codificar para su transmisión segura en una URL. Esto incluye espacios y signos de puntuación que podrían causar problemas si se incluyen en una URL sin codificar.
Codificación: Se llama al método HttpUtility.UrlEncode con originalString como su argumento. Este método procesa la cadena y devuelve una nueva cadena en la que los caracteres no seguros se sustituyen por sus equivalentes codificados porcentualmente. Por ejemplo, los espacios se reemplazan con %20.
Salida: Finalmente, el programa imprime tanto las cadenas originales como las codificadas en la consola.
using System;
using System.Web;
class Program
{
static void Main()
{
// Define the original URL path, which includes spaces.
string originalPath = "/api/search/Hello World!";
// Use the HttpUtility.UrlPathEncode method to encode the path.
string encodedPath = HttpUtility.UrlPathEncode(originalPath);
// Output the original and encoded paths to the console.
Console.WriteLine("Original Path: " + originalPath);
Console.WriteLine("Encoded Path: " + encodedPath);
}
}
using System;
using System.Web;
class Program
{
static void Main()
{
// Define the original URL path, which includes spaces.
string originalPath = "/api/search/Hello World!";
// Use the HttpUtility.UrlPathEncode method to encode the path.
string encodedPath = HttpUtility.UrlPathEncode(originalPath);
// Output the original and encoded paths to the console.
Console.WriteLine("Original Path: " + originalPath);
Console.WriteLine("Encoded Path: " + encodedPath);
}
}
Imports System
Imports System.Web
Friend Class Program
Shared Sub Main()
' Define the original URL path, which includes spaces.
Dim originalPath As String = "/api/search/Hello World!"
' Use the HttpUtility.UrlPathEncode method to encode the path.
Dim encodedPath As String = HttpUtility.UrlPathEncode(originalPath)
' Output the original and encoded paths to the console.
Console.WriteLine("Original Path: " & originalPath)
Console.WriteLine("Encoded Path: " & encodedPath)
End Sub
End Class
Equivalentes de Entidad de Carácter en Codificación de URL: El proceso mostrado transforma el valor de cadena de una ruta URL, convirtiendo espacios en sus equivalentes de entidad de carácter (%20) para la compatibilidad web. Esto es crucial porque las URL no pueden contener caracteres de espacio reales.
Manipulación de valores de cadena y cadena de URL: El valor de cadena de la variable originalPath es "/api/search/Hello World!", que es un ejemplo típico de una cadena de URL que necesita codificación debido a la inclusión de espacios.
Aunque este ejemplo utiliza una versión específica de HttpUtility.UrlPathEncode sin sobrecargas de métodos, es importante destacar la intención de diseño del método para codificar rutas de URL. Los desarrolladores deben ser conscientes de las sobrecargas de métodos cuando existen, ya que proporcionan formas alternativas de utilizar un método, a menudo aceptando diferentes tipos de entrada o proporcionando funcionalidad adicional.
Codificación de Objeto y Transformación de Cadena URL: El objeto de codificación en este contexto es implícito en el funcionamiento del método HttpUtility.UrlPathEncode, que toma una cadena URL y devuelve su forma codificada. Este método garantiza que la estructura de la ruta URL permanezca intacta mientras se codifican los caracteres especiales en sus representaciones apropiadas.
Salida de la Ruta Codificada: El programa demuestra la transformación de la ruta original a la ruta codificada. Se trata de un ejemplo directo de codificación de una cadena URL para adaptarla a la transmisión web, abordando los posibles problemas que podrían introducir los espacios y otros caracteres especiales.
using System;
class Program
{
static void Main()
{
string originalUri = "https://example.com/search?query=Hello World!";
string escapedUri = Uri.EscapeUriString(originalUri);
Console.WriteLine("Original URI: " + originalUri);
Console.WriteLine("Escaped URI: " + escapedUri);
}
}
using System;
class Program
{
static void Main()
{
string originalUri = "https://example.com/search?query=Hello World!";
string escapedUri = Uri.EscapeUriString(originalUri);
Console.WriteLine("Original URI: " + originalUri);
Console.WriteLine("Escaped URI: " + escapedUri);
}
}
Imports System
Friend Class Program
Shared Sub Main()
Dim originalUri As String = "https://example.com/search?query=Hello World!"
Dim escapedUri As String = Uri.EscapeUriString(originalUri)
Console.WriteLine("Original URI: " & originalUri)
Console.WriteLine("Escaped URI: " & escapedUri)
End Sub
End Class
URI Original: La variable originalUri se inicializa con una cadena que representa un URI completo, incluyendo una cadena de consulta con espacios y caracteres especiales. Para que los navegadores y servidores web procesen correctamente el URI, estos caracteres especiales deben "escaparse".
Escapando el URI: Se invoca el método Uri.EscapeUriString con originalUri como su argumento. Este método escanea la cadena URI y escapa los caracteres que no están permitidos o que podrían causar ambigüedad en una URI.
Salida: El programa imprime tanto el URI original como el URI escapado en la consola.
IronPDF es una biblioteca PDF que simplifica la creación, edición y manipulación de archivos PDF dentro de aplicaciones .NET. Diseñado para integrarse perfectamente con C# y VB.NET, IronPDF ofrece a los desarrolladores las funciones para generar PDFs desde HTML o directamente desde texto. Tanto si necesita automatizar la generación de facturas como crear informes dinámicos o gestionar documentos en un entorno .NET, IronPDF destaca por su facilidad de uso y su completo conjunto de funciones.
El punto culminante de IronPDF es su característica de conversión de HTML a PDF, manteniendo tus diseños y estilos. Esto permite la creación de PDF a partir de contenido web, perfecto para informes, facturas y documentación. Los archivos HTML, las URL y las cadenas HTML pueden convertirse en PDF fácilmente.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
En el siguiente ejemplo, veremos cómo utilizar IronPDF junto con la codificación URL para generar un PDF a partir de una página web. El escenario consiste en codificar una URL para garantizar que está correctamente formateada para las solicitudes web y, a continuación, utilizar IronPDF para convertir el contenido de esa URL en un documento PDF.
En primer lugar, asegúrese de que tiene IronPDF instalado en su proyecto. Si utiliza NuGet Package Manager, puede instalarlo ejecutando:
Install-Package IronPdf
Ahora, vamos a sumergirnos en el código:
using System.Web;
using IronPdf;
License.LicenseKey = "License-Key";
string baseUrl = "https://example.com/search";
// The query parameter with spaces that needs to be encoded
string query = "Hello World!";
// Encoding the query parameter to ensure the URL is correctly formatted
string encodedQuery = HttpUtility.UrlEncode(query);
// Constructing the full URL with the encoded query parameter
string fullUrl = $"{baseUrl}?query={encodedQuery}";
// Initialize the IronPDF HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Convert the web page at the encoded URL to a PDF document
var pdf = renderer.RenderUrlAsPdf(fullUrl);
// Save the PDF to a file
string filePath = "webpage.pdf";
pdf.SaveAs(filePath);
Console.WriteLine($"PDF successfully created from: {fullUrl}");
Console.WriteLine($"Saved to: {filePath}");
using System.Web;
using IronPdf;
License.LicenseKey = "License-Key";
string baseUrl = "https://example.com/search";
// The query parameter with spaces that needs to be encoded
string query = "Hello World!";
// Encoding the query parameter to ensure the URL is correctly formatted
string encodedQuery = HttpUtility.UrlEncode(query);
// Constructing the full URL with the encoded query parameter
string fullUrl = $"{baseUrl}?query={encodedQuery}";
// Initialize the IronPDF HtmlToPdf renderer
var renderer = new ChromePdfRenderer();
// Convert the web page at the encoded URL to a PDF document
var pdf = renderer.RenderUrlAsPdf(fullUrl);
// Save the PDF to a file
string filePath = "webpage.pdf";
pdf.SaveAs(filePath);
Console.WriteLine($"PDF successfully created from: {fullUrl}");
Console.WriteLine($"Saved to: {filePath}");
Imports System.Web
Imports IronPdf
License.LicenseKey = "License-Key"
Dim baseUrl As String = "https://example.com/search"
' The query parameter with spaces that needs to be encoded
Dim query As String = "Hello World!"
' Encoding the query parameter to ensure the URL is correctly formatted
Dim encodedQuery As String = HttpUtility.UrlEncode(query)
' Constructing the full URL with the encoded query parameter
Dim fullUrl As String = $"{baseUrl}?query={encodedQuery}"
' Initialize the IronPDF HtmlToPdf renderer
Dim renderer = New ChromePdfRenderer()
' Convert the web page at the encoded URL to a PDF document
Dim pdf = renderer.RenderUrlAsPdf(fullUrl)
' Save the PDF to a file
Dim filePath As String = "webpage.pdf"
pdf.SaveAs(filePath)
Console.WriteLine($"PDF successfully created from: {fullUrl}")
Console.WriteLine($"Saved to: {filePath}")
El ejemplo comienza con una URL base y una cadena de consulta que contiene espacios. La cadena de consulta se codifica usando HttpUtility.UrlEncode para garantizar que se transmita de manera segura en la URL. Después de codificar la consulta, se añade a la URL base para formar la URL completa a la que se accederá.
Con la URL completa y codificada lista, el renderizador ChromePdfRenderer de IronPDF se utiliza para obtener la página web en esa URL y convertirla en un documento PDF. Esto implica crear una instancia de la clase ChromePdfRenderer y luego llamar a RenderUrlAsPdf con la URL codificada. Finalmente, el PDF generado se guarda en un archivo utilizando el método SaveAs. El archivo resultante es un documento PDF del contenido de la página web, accesible a través de la URL codificada. Este es el archivo PDF de salida:
En resumen, C# ofrece potentes funciones de codificación y descodificación de URL que garantizan la transmisión segura y eficaz de datos por Internet. Mediante los métodos incorporados en los espacios de nombres System.Web y System.Net, los desarrolladores pueden codificar las URL para evitar problemas con caracteres especiales y descodificarlas a su forma original para una interpretación precisa de los datos.
Para aquellos interesados en explorar las ofertas de licencia de prueba de IronPDF, están disponibles, brindando la oportunidad de evaluar su funcionalidad de primera mano. Si decides integrar IronPDF en tus proyectos, las licencias comienzan desde $749, ofreciendo una suite completa de características para satisfacer tus necesidades de manipulación de PDF dentro del marco .NET.