En uno de los previous posts se sugirió usar System.Uri para verificar si la URL es válida. ¿Cómo hace uno eso?¿Cómo se usaría la clase System.Uri .NET para verificar si la URL es válida?
Respuesta
para comprobar si una URL es válida en lugar de utilizar excepciones puede utilizar el TryCreate método:
Uri result;
if (Uri.TryCreate("http://www.google.com", UriKind.RelativeOrAbsolute, out result))
{
// the url is valid
}
Si está revisando si la estructura de la URL es válida, entonces previous answer está bien.
Sin embargo, si desea comprobar que el recurso existe en realidad, tendrá que utilizar las clases que se derivan de WebRequest/WebResponse. Para los recursos HTTP y FTP, las clases HttpWebRequest/FtpWebRequest y HttpWebResponse/FtpWebResponse funcionarán bien (al igual que WebClient), pero si tiene otros esquemas que debe admitir, tendrá que buscar proveedores específicos para ese esquema.
puede utilizar el método IsWellFormedUriString estática:
bool isValid = Uri.IsWellFormedUriString(url, UriKind.Absolute);
http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx
Usando Uri .TryCreate puede tener algunos problemas con Uris relativo, con una cadena como esta "/folder/{ht.com.m\/sx.r:erp://" TryCreate devuelve verdadero, así que creo esto método de extensión usando IsWellFormedUriString y TyrCreate, no estoy seguro de TRYCREATE es necesario, con mis pequeñas pruebas que consigo los mismos resultados con o sin TRYCREATE
public static bool IsUri(this string source) {
if(!string.IsNullOrEmpty(source) && Uri.IsWellFormedUriString(source, UriKind.RelativeOrAbsolute)){
Uri tempValue;
return (Uri.TryCreate(source, UriKind.RelativeOrAbsolute, out tempValue));
}
return (false);
}
Ejemplo
address= "http://www.c$nbv.gob.mx"
if(address.IsUri()){
//returns false
}
address= "http://www.cnbv.gob.mx"
if(address.IsUri()){
//returns true
}
address= "http://www.cnbv.gob.mx:80"
if(address.IsUri()){
//returns true
}
address= "/directory/path"
if(address.IsUri()){
//returns true
}
address= "~re#l|ativ[ainco#recta\car:.\peta"
if(address.IsUri()){
//returns false
}
- 1. Cómo verificar si la URL es válida en Android
- 2. C# ¿Cómo puedo verificar si existe una URL/es válida?
- 3. En python, ¿cómo verificar si una fecha es válida?
- 4. Ruby: ¿Cómo verificar si una cadena es una hora válida?
- 5. ¿Cómo puedo verificar si una BST es válida?
- 6. ¿Cómo impido que System.Uri descodifique una URL?
- 7. ¿Cómo verificar si una variable enum es válida?
- 8. Cómo verificar si una cadena en Java es una URL válida
- 9. ¿Cómo comprobar si la ruta es válida en boost :: filesystem?
- 10. Comprobando la URL de fuente RSS válida
- 11. ¿Cómo comprobar si la consulta MySQL es válida sin ejecutarla?
- 12. java.io.FileNotFoundException para URL válida
- 13. ¿Verifica si la URL es válida para que pueda pasarla a un NSURL?
- 14. ¿Cómo puedo verificar si una URL es absoluta usando Python?
- 15. Compruebe si la URL es un torrente en C# .NET
- 16. Consulta válida para verificar si existe fila en SQLite3
- 17. ¿Cómo puedo verificar si una instancia de Lucene IndexWriter es válida/abierta?
- 18. Determinar si la página es válida en JavaScript - ASP.NET
- 19. jquery cómo verificar si url contiene palabra?
- 20. Verificar la cadena utf8 válida en Python
- 21. AIR, Flex: cómo comprobar si la expresión regular es válida
- 22. ¿Cómo comprobar que la URL es una fuente de imagen válida utilizando Jquery?
- 23. ¿Cómo puedo comprobar si una URL es una imagen válida (en javascript)?
- 24. ¿Cuál es la mejor manera de verificar si una cadena contiene una URL en Java/Android?
- 25. ¿Cuál es la mejor y más rápida forma de verificar si la imagen es válida en PHP?
- 26. Comprueba si la variable es una fecha válida con PHP
- 27. ¿Altere la expresión regular para permitir la dirección IP al verificar la URL?
- 28. C++ comprobar si una fecha es válida
- 29. Async/Espera la implementación de la clase WebBrowser para .NET
- 30. ¿cómo se puede verificar fácilmente si se deniega el acceso para un archivo en .NET?
eso me gusta más. ¡Gracias! –
Ahora, de acuerdo con Uri.TryCreate url como hht: //www.gogole.com es válido. Aunque el htt: es un esquema no válido. ¿Por qué está htt: está bien? –
htt: es un esquema perfectamente válido. Un protocolo personalizado podría definir este esquema. –