none
Scindé 2 url en 1 RRS feed

  • Question

  • Bonjour,
    j'essaye de scindé 2 url en 1
    plus précisemment je veux ajouté un mot a la fin d'un premier url
     
            Dim url As System.Uri
            Dim url2 As System.Uri
            If Uri.CheckHostName(TextBox1.Text()) =  UriHostNameType.Dns Then
                WebBrowser1.Navigate(TextBox1.Text())
            Else
                MsgBox("Nom de domaine inconnu")
            End If
            url = WebBrowser1.Url()
            url2 = "http://www.whois.net/search-domains/"
            WebBrowser2.Navigate(url2 + url1) ' c'est ici que ca bloque

    Merci d'avance

    (+_+)
    vendredi 19 février 2010 12:41

Réponses

  • Bonsoir,

    Mmmh...
    Ma regex n'enleve pas les www, elle prend les 2 derniers mots de ton URL qui sont séparés par un point.

    J'ai l'impression que je n'ai pas été clair, alors je vais mettre le code au complet ...

    Voilà ce qu'il faut faire :


        Dim url As System.Uri
        Dim reg As New Regex("\w+\.\w+$")
        If Uri.CheckHostName(TextBox1.Text()) =  UriHostNameType.Dns Then
            WebBrowser1.Navigate(TextBox1.Text())
        Else
            MsgBox("Nom de domaine inconnu")
        End If
        url = WebBrowser1.Url()
        Dim m As Match = reg.Match(url.Authority)
        If m IsNot Nothing AndAlso m.Length > 0 Then
            ' Ici dans m.ToString(), on a la partie de l'URL qu'on veut ajouter de URL1.
            Dim url2 As New System.Uri("http://www.whois.net/search-domains/" + m.ToString())
            WebBrowser2.Navigate(url2)
        Else
            Console.WriteLine("No match")
        End If


    Cordialement,

    Thomas

    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    vendredi 19 février 2010 18:55
  • Apres quelque bataille avec regex j'ai vu que whois accepte les http:// donc voici le code final: qui fonctionne
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim baseUri As New Uri("http://whois.domaintools.com/")
            Dim m As String = TextBox1.Text
            Dim n As String = baseUri.ToString()
            Dim o As String
            o = m.Insert(0, n)
            WebBrowser2.Navigate(o)
    End Sub
    L'idée etait aulieu de ce cassé la tête en insérant m a la fin de n mais d'inséré n au début de m donc pas besoin de calculé a combien de caractère insére m


    (+_+)
    • Marqué comme réponse ccoWnu vendredi 19 février 2010 18:56
    vendredi 19 février 2010 18:56

Toutes les réponses

  • Bonjour,

    J'utilise peu le webBrowser, et jamais encore sur vbNet, toutefois as-tu fait quelques essais, comme mettre des guillemets, puis avec ou sans ces derniers, mettre le signe "&" entre les deux chaînes ?

    Sinon je vois url1 = WebBrowser ... donc une url je présume ? Exp : http://mesromans.free.fr
    Et en url2 il y en a une autre, exp : http://irolog.free.fr
    Ensuite tu fais url1 + url2, ce qui devraait donner "unr1url2" = ici exp :
    http://mesromans.free.frhttp://irolog.free.fr

    Es-tu certain que ça ba passer en URL ça ?

    Cordialement.

    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    vendredi 19 février 2010 13:01
  • disons que l'utilisateur devra mettre dans un texte box par exemple "google.com" puis cliquer sur un bouton
    je voudrais rajouter google.com a http://www.whois.net/search-domains/
    j'ai trouvé la première étape pour transformer http://www.whois.net/search-domains/ en uri mais pour rajouté google.com
    j'ai essayé & et les signe mathématiques cela ne passe pas T_T

    (+_+)
    vendredi 19 février 2010 13:20
  • Bonjour,

    En fait, sur ton URL1, il te faut prendre le nom de domaine.

    Imaginons que tu souhaites faire un whois sur sharplog.fr, voilà l'URL que tu dois lancer : http://www.whois.net/whois/sharplog.fr

    Sauf que ton URL1 peut être à peu près n'importe quoi.
    On va donc la retravailler.

    Premièrement, on va récupérer l'Authority au choix, soit par GetLeftPart:
    http://msdn.microsoft.com/en-us/library/system.uri.getleftpart.aspx
    Soit, plus simple par la Property Authority :
    http://msdn.microsoft.com/en-us/library/system.uri.authority.aspx

    Ensuite, une fois qu'on a ça, pour un whois, il faut juste le domaine, donc il va falloir récupérer seulement la fin de l'URI.
    Typiquement, à partir de l'URI http://www.sharplog.fr, l'Authority renvoie :
    www.sharplog.fr et nous on veut juste avoir sharplog.fr pour construire notre URL.

    On va faire de la Regex.
    Voilà un petit exemple de code que tu peux coller sous un bouton pour tester, il ecrit dans la console d'abord l'Authority, et puis surtout le résultat qui t'intéresse :

    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim baseUri As New Uri("http://www.sharplog.fr/index.html")
        
        Console.WriteLine(baseUri.Authority)
        Dim reg As New Regex("\w+\.\w+$")
        Dim m As Match = reg.Match(baseUri.Authority)
        If m IsNot Nothing AndAlso m.Length > 0 Then
            ' Ici dans m.ToString(), on a la partie de l'URL qu'on veut ajouter de URL1.
            Console.WriteLine(m.ToString())
        Else
            Console.WriteLine("No match")
        End If
    End Sub

    Et le tour est joué.
    Dans m.ToString(), on a ce qu'on voulait ajouter à la fin de l'URL1.
    Je te laisse adapter ton code, mais le code fourni fait qu'à partir d'une URI, que j'ai appelé baseUri ici, tu obtiens le domaine.

    Cordialement,

    Thomas





    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    • Marqué comme réponse ccoWnu vendredi 19 février 2010 18:02
    • Non marqué comme réponse ccoWnu vendredi 19 février 2010 18:07
    • Marqué comme réponse ccoWnu vendredi 19 février 2010 18:11
    • Non marqué comme réponse ccoWnu vendredi 19 février 2010 18:12
    vendredi 19 février 2010 13:43
  • Merci de l'aide
    voici mon code:
    WebBrowser1.Navigate(TextBox1.Text)
    Dim baseUri As New Uri("http://whois.domaintools.com/")
    Dim reg As New Regex("\w+\.\w+$")
    Dim m As Match = reg.Match(baseUri.Authority)
    If m IsNot Nothing AndAlso m.Length > 0 Then
            WebBrowser2.Navigate(m)
    Else
            MsgBox("nom de domaine non trouvable")
    End If
    tu enleve les w avec regex sauf que whois a des w donc cela ne fonctione pas je retourne sur l'acceuille de domaintool et non sur whois.domaintool
    (+_+)
    vendredi 19 février 2010 18:09
  • heureseument whois.domaintool peut aussi prendre en conte les www.xx
    je vais réessayer en enlevent les w du filtre regex
    (+_+)
    vendredi 19 février 2010 18:16
  • Bonsoir,

    Mmmh...
    Ma regex n'enleve pas les www, elle prend les 2 derniers mots de ton URL qui sont séparés par un point.

    J'ai l'impression que je n'ai pas été clair, alors je vais mettre le code au complet ...

    Voilà ce qu'il faut faire :


        Dim url As System.Uri
        Dim reg As New Regex("\w+\.\w+$")
        If Uri.CheckHostName(TextBox1.Text()) =  UriHostNameType.Dns Then
            WebBrowser1.Navigate(TextBox1.Text())
        Else
            MsgBox("Nom de domaine inconnu")
        End If
        url = WebBrowser1.Url()
        Dim m As Match = reg.Match(url.Authority)
        If m IsNot Nothing AndAlso m.Length > 0 Then
            ' Ici dans m.ToString(), on a la partie de l'URL qu'on veut ajouter de URL1.
            Dim url2 As New System.Uri("http://www.whois.net/search-domains/" + m.ToString())
            WebBrowser2.Navigate(url2)
        Else
            Console.WriteLine("No match")
        End If


    Cordialement,

    Thomas

    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    vendredi 19 février 2010 18:55
  • Apres quelque bataille avec regex j'ai vu que whois accepte les http:// donc voici le code final: qui fonctionne
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim baseUri As New Uri("http://whois.domaintools.com/")
            Dim m As String = TextBox1.Text
            Dim n As String = baseUri.ToString()
            Dim o As String
            o = m.Insert(0, n)
            WebBrowser2.Navigate(o)
    End Sub
    L'idée etait aulieu de ce cassé la tête en insérant m a la fin de n mais d'inséré n au début de m donc pas besoin de calculé a combien de caractère insére m


    (+_+)
    • Marqué comme réponse ccoWnu vendredi 19 février 2010 18:56
    vendredi 19 février 2010 18:56
  • Bonsoir,

    Tu as changé d'URL pour ton whois ;)
    Avec la précédente, si on laissait le http, il ne trouvait rien.

    Et en effet, je viens de tester avec le nouveau whois, tu peux concaténer tout simplement les 2 URLs sans même t'embêter à récupérer le domaine, c'est le whois qui fait le boulot au dessus en traitement de chaine à l'arrivée.
    Par contre, pour des raisons de performance et pour avoir la possibilité de changer de fournisseur de whois sans se préoccuper de savoir s'ils retraiteront ta chaine avec le HTTP ou pas, je te conseillerai de faire le retraitement à la source, je pense que cela sera plus rapide en termes d'affichage de la page et plus facile à maintenir.

    Sinon, j'ai vu qu'au bout de 3 fois, il me demande de nous enregistrer, fais attention à pas être bloqué.

    Cordialement,

    Thomas
    Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr
    vendredi 19 février 2010 19:11
  • Bonjour,

    Je comprends mieux désormais, ce n'est pas "scinder" deux url en une, mais le contraire "concatainer" deux url en une.
    Tu entreq en dur une url et l'utilisateur y entre le domaine validé par un bouton, ce qui fait, exp :

    dim lurl = http://irolog.free.fr/
    textbox1.text = "index.htm"
    Sub button1...
     lurl = lurl & textBox.text
     go browser lurl
    end sub

    ---

    Sinon, il y a une manipulation plus basique pour tout ça, enfin, je parle d'éliminer l'avant du surplus de la saisie (http://www. ou http://)
    Exp schématique, je ne tiens pas compte de la vraie syntaxe:

    urlsaisie = textBox.text ' http://www.x.y OU http://x.y
    dim urlOK as string
    if mid(urlSaisie, 10, 1) = "w" then
      urlOK = mid(urlSaisie, 12, len(urlsaisle) -12)
     else
      urlOK = mid(urlSaisie, 8, len(urlsaisie) -8)
    endif
    webbrowser = urlOK

    Mais ça ne résoud rien dans l'absolu si la personne écrit n'importe quoi (tester les tailles < à X ou supérieures à Y), la seule solution approchante est d'envoyer et de tester le retour, et si une erreur survient, d'envoyer un message d'erreur et la façon de saisir, du fait que a priori on ne peut appeler que certains sites se trouvant sur un domaine "entré en dur", il n'est pas utile de cadrer afin de savoir si la personne a appelé une page permise, sinon il faudrait encore faire ça pour que ce soit incontournable.

    Cordialement.


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Proposé comme réponse EhJoe samedi 20 février 2010 19:47
    samedi 20 février 2010 12:42