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"