Trabajando con direcciones…

A veces en nuestros proyectos, los usuarios deben ingresar un dirección URL, para ello sería conveniente comprobar si es correcta, y de ser así, de que tipo es (HTTP, FTP, etc.), por eso os dejo aquí unos pequeños trucos para trabajar con ellas.

¿Qué clase es la indicada para este trabajo?

Se trata de la clase System.Uri. Esta clase contiene una serie de métodos compartidos para trabajar con direcciones y además si creamos una instancia de ella, podemos saber más cosas de la dirección.

¿Cómo podemos comprobar si una dirección es correcta?

Para ello, tenemos que usar el método compartido System.Uri.IsWellFormedUriString. Este método compartido tiene dos parámetros: uriString y uriKind. Al primero le debemos dar la cadena de la dirección, y al segundo le tenemos que señalar lo "permisivo" que será con esa dirección, explico esto con un ejemplo. Lo correcto sería poner: http://www.microsoft.es, aunque www.microsoft.es también sería válido (a la hora de navegar con nuestro explorador), por ello si queremos que la segunda opción sea válida le debemos poner UriKind.Relative y si queremos que no sea válido le debemos poner UriKind.Absolute.

¿Y si ahora queremos saber que tipo de dirección es?

Para ello debemos crear una instancia de la clase System.Uri.

Dim ObjUri As New System.Uri(URL)

Una vez que lo tengamos creado, tenemos que obtener el scheme, para ello recomiendo usar un Select Case ya que así podemos comparar con todos los esquemas:

Select Case ObjUri.Scheme
   Case Uri.UriSchemeHttp

   Case Uri.UriSchemeHttps

   Case Uri.UriSchemeFtp

   Case Uri.UriSchemeFile

   Case
Uri.UriSchemeMailto
End Select


Puse los mas conocidos pero podéis encontrar más dentro de System.Uri.

Último ejemplo…

Como último ejemplo voy a hacer una función de tipo System.Boolean que lo que hará es válidar si una URL es de tipo HTTP o HTTPs:

Public Function Validar(ByVal URL As String) As Boolean

    'Comprobamos si la dirección es correcta, en caso de no ser así devolvemos False y salimos de la función.

    If Not System.Uri.IsWellFormedUriString(URL, UriKind.Absolute) Then

        Return False

        Exit Function

    End If

    'Instanciamos la clase Uri para poder comprobar el scheme.

    Dim objUri As Uri = New Uri(URL)

    'Y ahora comprobamos si es de tipo HTTP o HTTPs

    If objUri.Scheme = Uri.UriSchemeHttp Or objUri.Scheme = Uri.UriSchemeHttps Then

        Return True

        Exit Function

    Else

        Return False

    End If

End Function

Espero que os sea útil 😉

2 thoughts on “Trabajando con direcciones…

  1. Esta bien el articulo, sobre todo para aquellos que no hemos usado nunca esta clase.
    Ahora bien, en mi caso tengo una clase que interactue con archivos, no importando que esté en un servidor o una maquina en local, por lo que uso siempre rutas relativas. ¿La clase Uri serviría?
    Yo actualmente uso

    System.Web.HttpContext.Current.Server.MapPath(urlRelative)

    para obtener rutas absolutas partiendo de relativas, pero solo funciona en aplicaciónes ASP. ¿cual sería la mejor solución, para poderla usar tanto en aplicaciones asp, como con WPF? Gracias de antemano.

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *