11
votes

C #, Y a-t-il un meilleur moyen de vérifier le formatage de l'URL que Iswellformedurining?

y a-t-il une méthode / une méthode meilleure / plus précise / plus stricte pour savoir si une URL est correctement formatée? strong>

Utilisation: p>

Uri nUrl = null;
if (Uri.TryCreate(url, UriKind.Absolute, out nUrl))
{
    url = nUrl.ToString(); 
}


1 commentaires

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"


4 Réponses :


8
votes

Techniquement, http: //www.google.com est une URL correctement formatée, selon le Spécification de l'URL . Le notsupportedexception a été lancé car http n'est pas un système enregistré. S'il s'agissait d'une URL mal formatée, vous auriez obtenu une uformatexception . Si vous vous souciez simplement des URL HTTP (S), vérifiez également le schéma.


1 commentaires

Je pensais que c'était. Je veux juste que cela filtre en fonction de ce qui peut être utilisé, pas trop de spécification.



13
votes

La raison uri.iswellformedurining ("http: //www.google.com", urikind.absoluute) retourne est parce qu'il est sous une forme qui pourrait être une URI valide. Uri et URL ne sont pas les mêmes.

Voir: Quelle est la différence entre une URI et une URL ?

Dans votre cas, je vérifierais que nouvel URI ("http: //www.google.com") .Scheme était égal à http ou https .


3 commentaires

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 .


@ 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.



-2
votes

Ce code fonctionne bien pour que je vérifie un textbox avoir un format URL valide xxx


0 commentaires

4
votes

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;
    }
}


0 commentaires