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 😉