without httputility convert c# .net console

c# - httputility - UrlEncode a través de una aplicación de consola?



convert to url encoding c# (11)

HttpUtility.UrlEncode ("url") en System.Web.

Normalmente solo usaría:

HttpContext.Current.Server.UrlEncode("url");

Pero como se trata de una aplicación de consola, HttpContext.Current siempre será null .

¿Hay algún otro método que haga lo mismo que yo podría usar?



utilice el método estático HttpUtility.UrlEncode.


Me encontré con este problema yo mismo, y en lugar de agregar el ensamblado System.Web a mi proyecto, escribí una clase para codificar / descodificar URL (es bastante simple, y he hecho algunas pruebas, pero no mucho). He incluido el código fuente a continuación. Por favor: deja el comentario en la parte superior si vuelves a usar esto, no me culpes si se rompe, aprende del código.

'''''' <summary> '''''' URL encoding class. Note: use at your own risk. '''''' Written by: Ian Hopkins (http://www.lucidhelix.com) '''''' Date: 2008-Dec-23 '''''' </summary> Public Class UrlHelper Public Shared Function Encode(ByVal str As String) As String Dim charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*''()")) Dim pattern = String.Format("[^{0}]", charClass) Dim evaluator As New MatchEvaluator(AddressOf EncodeEvaluator) '' replace the encoded characters Return Regex.Replace(str, pattern, evaluator) End Function Private Shared Function EncodeEvaluator(ByVal match As Match) As String '' Replace the " "s with "+"s If (match.Value = " ") Then Return "+" End If Return String.Format("%{0:X2}", Convert.ToInt32(match.Value.Chars(0))) End Function Public Shared Function Decode(ByVal str As String) As String Dim evaluator As New MatchEvaluator(AddressOf DecodeEvaluator) '' Replace the "+"s with " "s str = str.Replace("+"c, " "c) '' Replace the encoded characters Return Regex.Replace(str, "%[0-9a-zA-Z][0-9a-zA-Z]", evaluator) End Function Private Shared Function DecodeEvaluator(ByVal match As Match) As String Return "" + Convert.ToChar(Integer.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber)) End Function End Class


Kibbee ofrece la respuesta real. Sí, HttpUtility.UrlEncode es el método correcto para usar, pero no estará disponible por defecto para una aplicación de consola. Debe agregar una referencia a System.Web. Para hacer eso,

  1. En su explorador de soluciones, haga clic derecho en referencias
  2. Elija "agregar referencia"
  3. En el cuadro de diálogo "Agregar referencia", use la pestaña .NET
  4. Desplázate hasta System.Web, selecciona eso y presiona ok

AHORA puedes usar el método UrlEncode. Aún querrás agregar,

usando System.Web

en la parte superior de la aplicación de la consola o usa el espacio de nombres completo cuando llamas al método,

System.Web.HttpUtility.UrlEncode (someString)


El código de Ian Hopkins me lo explica sin tener que agregar una referencia a System.Web. Aquí hay un puerto a C # para aquellos que no están usando VB.NET:

/// <summary> /// URL encoding class. Note: use at your own risk. /// Written by: Ian Hopkins (http://www.lucidhelix.com) /// Date: 2008-Dec-23 /// (Ported to C# by t3rse (http://www.t3rse.com)) /// </summary> public class UrlHelper { public static string Encode(string str) { var charClass = String.Format("0-9a-zA-Z{0}", Regex.Escape("-_.!~*''()")); return Regex.Replace(str, String.Format("[^{0}]", charClass), new MatchEvaluator(EncodeEvaluator)); } public static string EncodeEvaluator(Match match) { return (match.Value == " ")?"+" : String.Format("%{0:X2}", Convert.ToInt32(match.Value[0])); } public static string DecodeEvaluator(Match match) { return Convert.ToChar(int.Parse(match.Value.Substring(1), System.Globalization.NumberStyles.HexNumber)).ToString(); } public static string Decode(string str) { return Regex.Replace(str.Replace(''+'', '' ''), "%[0-9a-zA-Z][0-9a-zA-Z]", new MatchEvaluator(DecodeEvaluator)); } }


Querrás usar

System.Web.HttpUtility.urlencode("url")

Asegúrese de tener system.web como una de las referencias en su proyecto. No creo que esté incluido como referencia por defecto en las aplicaciones de la consola.



¡Prueba esto!

Uri.EscapeUriString(url);

No es necesario hacer referencia a System.Web.


Use WebUtility.UrlEncode(string) desde el espacio de nombres System.Net


Lo mejor es Agregar referencia a System.web..dll

y use var EncodedUrl = System.Web.HttpUtility.UrlEncode ("URL_TEXT");

Puede encontrar el archivo en System.web.dll