IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Tester une url


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 36
    Points : 25
    Points
    25
    Par défaut Tester une url
    Bonjour,

    je suis actuellement en train de développer un petit navigateur web et j'ai un soucis :
    il faut que je test l’adresse entré par l'utilisateur pour savoir si elle est valide.

    pour l'instant je peu juste tester qu'il a bien rentré quelque chose dans la textbox mais il faut que je test si l'url est bonne.

    Exemple d'url valide :
    https://www.google.com
    http://www.developpez.net/forums/

    il y a deux problématique donc, savoir si l'url est bien structuré et savoir si il y a une page au bout .
    si l'url est invalide je pense faire un MessageBox.Show("L'url entrée est invalide");

    pour tester si l'url est bien construite j'ai entendu parler des expressions régulière mais je ne comprends pas comment ça marche après plusieurs recherche google .
    Pour la deuxième partie du problème je ne sais absolument pas comment faire

    Merci d'avance

    kormedhar

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Il est possible d'utiliser les Regex, mais il y a bien plus simple :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Uri createdUri;
    bool isValid = Uri.TryCreate(uriName, UriKind.Absolute, out createdUri) && (createdUri.Scheme == Uri.UriSchemeHttp || createdUri.Scheme == Uri.UriSchemeHttps);
    Ensuite il suffit de faire :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (isValid)
    {
        // Ici tu appelles le code si l'URL est valide
    }
    else
    {
        // Ici on affiche le message box
        MessageBox.Show("L'url entrée est invalide");
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    Merci pour cette rapide réponse

    mais le problème et que je code en c# (sous visual studio 2015)

    du coup j'ai tenté de traduire le code que vous m'avez fourni ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
           private bool traitement (string address)
            {
                Uri CreatedUri = new uri (address);
                bool IsValid = Uri.TryCreate(UriName,UriKind.Absolute, CreatedUri) && (CreatedUri.Scheme == Uri.UriSchemeHttp || CreatedUri.Scheme == Uri.UriSchemeHttps);
                if ((address!= "")&& (IsValid))
                {
                    return true;// l'url est correcte
                }
                else
                {
                    return false;// l'url est incorrecte 
                }         
            }
    et la j'ai deux petit problème : je ne trouve pas ce qui correspond "UriName" en c# a moins que ce soit le nom d'une variable dans ce cas elle doit contenir l'url je suppose ?
    le deuxième problème est que j comprend la partie "Uri.TryCreate(UriName,UriKind.Absolute, CreatedUri)" (je comprend pas comment ça fonctionne)

    je voudrais également récupérer le code http pour pouvoir faire un traitement dessus (créer un historique intelligent qui ne garde que les url valide visité)

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Arff au temps pour moi, je croyais qu'on était sur le forum VB.NET J'ai mis à jour le code de mon post précédent.

    Sinon, oui uriName est bien l'URL, donc ta variable address.

    Citation Envoyé par kormedhar Voir le message
    le deuxième problème est que j comprend la partie "Uri.TryCreate(UriName,UriKind.Absolute, CreatedUri)" (je comprend pas comment ça fonctionne)
    En fait on essaie de créer une URI. Si ca marche, c'est qu'elle est valide, sinon il y a un problème.

    Citation Envoyé par kormedhar Voir le message
    je voudrais également récupérer le code http pour pouvoir faire un traitement dessus (créer un historique intelligent qui ne garde que les url valide visité)
    Je ne vois pas vraiment l'intérêt dans le cadre d'un navigateur Web car ca te ferait faire au moins 2 requêtes HTTP, donc une navigation potentiellement plus lente. Mais si tu veux quand même le faire, voici une solution (il doit en exister d'autres) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    private bool RemoteFileExists(string url)
    {
        try
        {
            //Creating the HttpWebRequest
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            //Setting the Request method HEAD, you can also use GET too.
            request.Method = "HEAD";
            //Getting the Web Response.
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //Returns TRUE if the Status code == 200
            response.Close();
            return (response.StatusCode == HttpStatusCode.OK);
        }
        catch
        {
            //Any exception will returns false.
            return false;
        }
    }
    Code trouvé ici : http://stackoverflow.com/questions/9...xists-is-valid
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    merci pour cette efficacité

    j'ai complété ma fonction avec ce que tu m'a répondu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            private bool traitement (string address)
            {
                //création d'une uri a valeur "null"
                Uri CreatedUri;
                //on tente de créer l'url en vérifiant qu'elle est comforme a une url http ou https
                bool IsValid = Uri.TryCreate(address,UriKind.Absolute, out CreatedUri) && (CreatedUri.Scheme == Uri.UriSchemeHttp || CreatedUri.Scheme == Uri.UriSchemeHttps);
     
                if ((address!= "")&& (IsValid))
                {
                    return true;// on valide l'url entrée 
                }
                else
                {
                    return false;//on invalide l'url entrée
                }         
            }
    pour les codes erreurs je vais voir ce que je fais si c'est trop long j'abandonnerais ce traitement.
    je vais modifier ce que renvoie la fonction je pense par une url de recherche sur le navigateur (à voir comment elles sont faites) en tout cas merci pour ton aide qui m'as été très utile

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] [PHP-JS] Tester une URL
    Par afrodje dans le forum Langage
    Réponses: 1
    Dernier message: 10/12/2008, 21h14
  2. Tester une URL
    Par ginkas31 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 13/06/2008, 18h48
  3. Tester une URL avec fopen
    Par laurentdusseau dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2008, 22h25
  4. Réponses: 2
    Dernier message: 31/12/2007, 12h39
  5. tester une URL
    Par ddeee dans le forum ASP
    Réponses: 2
    Dernier message: 12/06/2006, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo