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

VB.NET Discussion :

Connexion a un site


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut Connexion a un site
    Bonjour,

    ça fais plusieurs jours que je cherche mais sans grand résulats

    J'explique mon probleme :
    Je voudrais me connecter a un site ( avec la méthode POST ), puis "naviguer" dessus ( mais sans cliquer moi même )...
    Je pense que ce n'est pas du tout clair ce que j'ai dit mais bon...

    En bref, grace a System.net.Sockets, j'aimerais ouvrir une connexion, puis me logger sur le site. Et enfin afficher le code source...

    Je tourne en rond, est-ce que quelqu'un aurai des explications a me fournir s'il vous plait ?


    Je vous remercie d'avance !

    Edertef

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tu as le composant WebBrowser pour les applications Windows. Il possède une propriété DocumentText qui représente le code source de la page lorsque la page est chargée. Et pour savoir quand la page est chargée, il suffit de traiter l'évènement DocumentCompleted de ton WebBrowser.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut
    Ok merci, avec webbrowser ça marche impec !
    je vais essayer de demander le moins possible mais ça va etre dur

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut
    Voila ça s'affiche impec, mais je tourne encore une fois en rond a cause d'un FORM !

    La page se présente ainsi :
    • un menu déroulant
    • login
    • password


    Donc j'ai fais plein de tentatives mais ça ne modifie pas les cases

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     WebBrowser1.Document.Forms("login").InnerText("Test")
    'ça me souligne tout en me disant qu'il faut utiliser la valeur renvoyée
    donc je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim osef As Windows.Forms.HtmlElement
    osef = WebBrowser1.Document.Forms("login").InnerText("Test")
    'là j'ai droit a "une valeur de type chars ne peut etre converti en Windows.Forms.HtmlElement blablabla
    donc je fais enfin ça XD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim osef As char
    osef = WebBrowser1.Document.Forms("login").InnerText("Test")
    'là ça compile mais ...
    Ouai, là ça compile et s'execute mais quand je clique sur le bouton j'ai ça :



    Même en mettant :
    ça ne fonctionne pas et remet la meme erreur !

    Je suis sur que c'est un truc vraiment tout con, et ça fais maintenant plus de 3H que je suis dessus ^^


    Si vous avez des pistes, codages ou autres choses, n'hésitez pas !

  5. #5
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    A mon avis, l'exception veut tout simplement dire que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebBrowser1.Document.Forms("login")
    te renvoie null


    Mais par contre, je viens d'essayer de faire ce que tu dis. Ce n'est pas form que tu dois utiliser mais (par exemple) GetElementById qui te permet de récupérer un contrôle html par rapport à son name.

    Prenons comme exemple la page http://www.developpez.com/ où nous allons écrire "test" dans la zone de recherche.

    En sachant que le textbox de recherche a comme nom q, il suffit d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    webBrowser1.Document.ActiveElement.Focus()
    Dim html As HtmlElement
    html = webBrowser1.Document.GetElementById("q")
    html.Focus()
    html.InnerText = "test"
    Et c'est tout

  6. #6
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Et pour info, Forms (que tu as utilisé) permet juste de récupérer la liste des balises Forms présentes dans le code source.

    http://msdn2.microsoft.com/en-us/lib...ent.forms.aspx

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut
    Ok ! Merci beaucoup !ça marche a la perfection !

    j'ai encore des choses a faire pour reussir enfin a me logguer mais je viens de comprendre ça ( c'est un bon début non :p )

    là je dois choisir dans une liste déroulante mais je crois que j'ai trouvé le moyen, et puis il faut que je simule un clic sur le bouton mais j'ai vu le script a quelque part ^^

    En tout cas merci beaucoup, je vais me débrouiller le plus possible et éviter de vous importuner tout le temps

  8. #8
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Pas de soucis, n'hésite pas à revenir en cas de problème

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut
    Hihi, me revoila

    j'ai testé la ligne là sur d'autres site ( google par exemple )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' WebBrowser1.Document.All.Item("Login").InvokeMember("click")
    ça fonctionne mais le probleme c'est que le code source de la page de login est différente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='submit' value='Login'>
    Comme vous le voyez, il n'y a pas de name='login' ...
    j'ai pas reussi a modifier le code source pour lui assigner un nom ...


    EDIT : J'ai reussi comme un grand, il m'a fallu modifier le code source directment

    Pour l'instant c'est bon !

    comment faire pour simuler un clic là dessus ?

  10. #10
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Je t'avoue que je n'ai toujours pas trouvé.

    J'arrive à mettre le focus sur le bouton mais pas plus

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut
    en fait, j'y ai pensé mais c'est pas exactement comme ça

    j'ai fait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WebBrowser1.Document.GetElementsByTagName("input").Item(2).OuterHtml = "<input type='submit' name='connexion' value='Login'>"
            WebBrowser1.Document.All.Item("connexion").InvokeMember("click")
    Par contre, je bloque encore ( décidément ^^ ). Mais là c'est vraiment débile ^^

    Il faut que je récupère l'évènement "documentcompleted" pour pouvoir executer une suite d'ordre mais seulement une fois que la page est chargé, sinon ça merdouille...

    et là ça me dépasse completement ( comme ça "pour changer" ? ^^ )

    voici mon algo :

    Appel fonction NAVIGUER(adresse)
    Une fois la page chargée ( documentcompleted)
    faire ce que j'ai a faire
    Appel fonction NAVIGUER(adresse)
    Une fois la page chargée ( documentcompleted)
    faire autre chose
    etc ...

    donc j'ai trouvé plusieurs bout de code qui recupere justement l'évenement et attende qu'il soit déclenché.


    j'en ai donc fais ça mais ça ne fais pas ce que je veux lol

    je fait un appel de la fonction naviguer(http://www.google.fr)

    ça fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Sub naviguer(ByVal adresse As String)
            WebBrowser1.Navigate(New Uri(adresse)) 'connexion
            AddHandler WebBrowser1.DocumentCompleted, New _ ' pas compris, c'est pour recup l'état de l'évent, un truc dans le genre
                WebBrowserDocumentCompletedEventHandler(AddressOf charge) 'une fois chargé, il appel la fonction que j'ai appelé charge
        End Sub
     
        Private Sub charge(ByVal sender As Object, _
         ByVal e As WebBrowserDocumentCompletedEventArgs) ' fonction charge en question
            Dim webBrowser1 As WebBrowser = CType(sender, WebBrowser) 'jsais pas
            MsgBox("coucou ") 'ce quelle fait
        End Sub
    mais le truc c'est que dans "AdressOf charge", je ne peut pas faire : (AdressOf variable), resultat, pour faire 3 truc différent, je doit faire 6 fonctions ! ( ou sub, mais j'appele ça fonction lol )...

    En bricolant, j'ai tenté de faire une variable boolean, qui, lorsque que c'est chargé passe pas TRUE, mais ça marche pas car le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while page_chargée = false
    'ne rien faire
    end while
    me fais tourner en rond en me faisant tout planter

    Comment faire pour qu'il fasse un truc comme ça par exemple :

    Appel fonction naviguer(adresse)
    page chargé
    suite

    etc...


    Merci


    Edit : n'empêche qu'avec tous les problèmes que j'ai a la suite, je vais même pouvoir me monter un site avec des exercices en posant mes problèmes au gens, ça aide bien a progresser :p

    EDIT 2 :
    Sur ce site, j'ai trouvé plein de choses interessantes, ça peut aider des gens ( moi en l'occurence ^^ )
    http://www.dc9.cn/post/310.html

    j'essai ça :

    VB.NET 2.0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, _
     
               ByVal e As WebBrowserDocumentCompletedEventArgs) _
     
               Handles WebBrowser.DocumentCompleted
     
         bBusy = False
     
    End Sub
    To finish off the example, don’t forget to declare the public bBusy flag.


    VB.NET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public bBusy As Boolean = false
    mais ça fais pas ce que je veut ( ça n'attend pas :s )


    EDIT 3 : ( le dernier lol )

    Maintenant que vous avez tout lu, j'annonce que j'ai reussi ! ^^

    j'ai fais comme sur le site donné au dessus, voici ma SUB naviguer :
    ( bbusy a été déclaré en boolean )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Sub naviguer(ByVal adresse As String)
            bbusy = True
            WebBrowser1.Navigate(New Uri(adresse))
            While (bbusy)
                Application.DoEvents()
            End While
        End Sub

  12. #12
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut connexion entre deux Pc
    salut,
    je suis entrain de faire mon projet de fin d'etude,je besoin de connaitre comment établir une liaison entre deux Pc en utilisant une carte réseau (par addresse IP).
    Nottons de plus que je manipule avec vb.net.
    Prière de me consulter de tout ce qu' est information ou source que peut m'aider.
    s'il vous plait, j'attend votre reponce que j'espère qu'elle sera urgente.
    vous pouvez me rejoindre sur mon addrese:
    heddaji_imed@yahoo.com
    Merci d'avance.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 33
    Par défaut
    heu .... heddaji, c'est pas trop le sujet !

    Bon, tout est ok pour mon programme, il me manque UNE SEULE CHOSE, mais de taille !

    il faut que le programme attende que la page soit chargée, l'evenement documentcompleted se déclenche trop vite, resultat : ça fouille dans un code source inexistant ==> PLANTAGE...

    comment faire ? ( sans boucle dans le vide si possible ! )


    Merci

Discussions similaires

  1. Problème de connexion à mon site depuis l'extèrieur
    Par samsoum07 dans le forum Apache
    Réponses: 1
    Dernier message: 07/12/2006, 11h32
  2. connexion a un site web
    Par nono08 dans le forum Web
    Réponses: 3
    Dernier message: 26/08/2006, 20h41
  3. simuler des connexion a mon site..
    Par questionneuse dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 11/07/2006, 15h05
  4. Connexion unique à un site
    Par kooxinel dans le forum Langage
    Réponses: 15
    Dernier message: 09/07/2006, 14h04
  5. Pb de connexion sécurisée pour sites Internet et Intranet
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2003, 17h16

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