Bonjour à vous et merci de vos contributions,

J'accéde à un site web dont la page d'accueil intégre une fonction recherche.
J'interagis avec cette page en donnant:
le nom du champs : "pattern" contenant le code à rechercher: FR0000050809
la fonction à éxecuter pour lancer la recherche: "$$event_minisearch"

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
' creation du controle, mise en place du hanndler pour détecter la fin de reception d'une page
	page_info = New System.Windows.Forms.WebBrowser
        AddHandler page_info.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf page_recue)
 
 
' pour ce site définir l'url, le champs contenet la donnée à rechercher, le nom de l'évènement à activer
        page_info.Navigate("https://www.mon_serveur.fr/")
        champs_recherche = "pattern"
        evenement_execute = "$$event_minisearch"
 
 
' placer la demande page pour ce site, attendre la fin de la réception
        page_info_completed = False
        nb_tentatives = 0
        Navigation()
 
' si le handler a détecté la fin de réception de la page, page_info_completed = True
        While page_info_completed = False And nb_tentatives < nb_time_slice_for_web_request
            nb_tentatives = nb_tentatives + 1
            System.Threading.Thread.Sleep(time_slice_for_web_request)
            Application.DoEvents()
        End While
 
 
' sortie en échec, message d'erreur, abandon de le recherche
        If nb_tentatives = nb_time_slice_for_web_request Then
            MessData(0) = serveur
            Afficher_le_Message("erreur80111erreur, impossible d'accéder au serveur ##")
        Else
 
 
' sinon, charger le champs recherche avec le code ISIN, executer la recherche
            page_info.Document.GetElementById(champs_recherche).InnerText = code_isin_recherche
            For Each element As HtmlElement In page_info.Document.GetElementsByTagName("input")
                If element.Name = evenement_execute Then
                    element.InvokeMember("click")
                    Exit For
                End If
            Next
 
	End if
 
' la page est reçue, les données attendues sont extraites, OK
Par contre cette solution est trés lente, alors que je ne visualise pas la page et ne navigue pas, d'où le souhait de ne plus utiliser WebBrowser mais HttpWebRequest, de lire le stream recu, de le transformer en document....



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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
        ' données utilisées par la demande et le décodage de la page html, du cours et de sa date 
        Dim Demande As System.Net.HttpWebRequest, Reponse As System.Net.HttpWebResponse, url As String
        Dim iDocument As MSHTML.IHTMLDocument2 = New MSHTML.HTMLDocumentClass
 
 
        ' pour ce site définir l'url, le champs contenet la donnée à rechercher, le nom de l'évènement à activer
        url = "https://www.mon_serveur.fr/"
        champs_recherche = "pattern"
        evenement_execute = "$$event_minisearch"
 
        ' faire la demande de page
        While nb_tentatives < nb_max_tentatives
            Demande = WebRequest.Create(url)
            Demande.Timeout = 20000
 
            ' lecture de la page reçue
            Reponse = Demande.GetResponse()
            If Reponse.StatusCode = HttpStatusCode.OK Then
                Dim reader As New StreamReader(Reponse.GetResponseStream())
 
                ' de la chaîne de caratéres reçues, établir l'HTML
                iDocument.open()
                iDocument.write(reader.ReadToEnd)
 
                reader.Close()
                Reponse.Close()
                Exit While
            End If
        End While
 
        '  charger le champs recherche avec le code ISIN, executer la recherche
        iDocument.getElementById(champs_recherche).innerText = code_isin_recherche
        For Each element As HtmlElement In iDocument.getElementsByTagName("input")
            If element.Name = evenement_execute Then
                element.InvokeMember("click")
                Exit For
            End If
        Next
la page est bien reçue, le champs "pattern" semble trouvé (? pas de message d'erreur, le document récupéré) par contre impossible d'effectuer la recherche per getElementByTagName

voici le message d'erreur reçu:

Impossible d'effectuer un cast d'un objet COM de type 'System_ComObject' en type de classe 'Sytem.Windows.Forms.HtmlElement. Les instances de type qui représentent les composants COM ne peuvent pas être castées en type différents représentant des composants COM; toutefois, elles peuvent être castées en interfaces tant que le composant COM sous-jacent prend en charge les appels QueryInterface pour l'ID de.....

et voilà pourquoi votre fille est muette!!

Comment accéder à la page avec les performances de HttpRequest, accéder à sa forme Document pour pouvoir carger des données et exécuter du code contenu dans cette page.

Un grand merci pour votre aide

A+