Utilisation: p> Uri nUrl = null;
if (Uri.TryCreate(url, UriKind.Absolute, out nUrl))
{
url = nUrl.ToString();
}
4 Réponses :
Techniquement, http: //www.google.com code> est une URL correctement formatée, selon le Spécification de l'URL . Le
notsupportedexception code> a été lancé car
http code> n'est pas un système enregistré. S'il s'agissait d'une URL mal formatée, vous auriez obtenu une
uformatexception code>. Si vous vous souciez simplement des URL HTTP (S), vérifiez également le schéma. p>
Je pensais que c'était. Je veux juste que cela filtre en fonction de ce qui peut être utilisé, pas trop de spécification.
La raison Voir: Quelle est la différence entre une URI et une URL ? p>
Dans votre cas, je vérifierais que uri.iswellformedurining ("http: //www.google.com", urikind.absoluute) code> retourne est parce qu'il est sous une forme qui pourrait être une URI valide. Uri et URL ne sont pas les mêmes. P>
nouvel URI ("http: //www.google.com") .Scheme code> était égal à
http code> ou
https code>. p>
Oh wow .. c'est de bonnes informations. J'étais juste sous l'hypothèse que c'était un nom différent pour la même chose (stupide moi ..).
@ Pizzl3 - Je n'étais pas au courant de la différence jusqu'à ce que je sache la recherche (écrire ma réponse à la question que j'ai liée). Voir mon édition ci-dessus pour tester la valeur du schéma code>.
@ Pizzl3 - Je ne sais pas quels autres Gochas pourrait y être. Les serveurs invalides vous viennent à l'esprit, mais vous ne saurez probablement pas si un serveur est valide ou pas avant d'essayer d'y accéder.
Ce code fonctionne bien pour que je vérifie un textbox code> avoir un format URL valide
La solution de Greg est correcte. Cependant, vous pouvez acier à l'aide d'URI et valider tous les protocoles (schéma) que vous souhaitez comme valide.
public static bool Url(string p_strValue) { if (Uri.IsWellFormedUriString(p_strValue, UriKind.RelativeOrAbsolute)) { Uri l_strUri = new Uri(p_strValue); return (l_strUri.Scheme == Uri.UriSchemeHttp || l_strUri.Scheme == Uri.UriSchemeHttps); } else { return false; } }
Vous avez probablement attrapé cela maintenant, mais vous avez un «t» supplémentaire dans votre URL. Pour quelqu'un d'autre qui pourrait essayer de copier-coller les solutions, assurez-vous de la modifier en "http" ou "https"