Private Sub Command1_Click()
Winsock1.Close 'Fermeture de winsock
Label1 = "Récupération du code src en cours..."
Code.Text = vbNullString
Winsock1.RemoteHost = TxtUrl 'Url
Winsock1.RemotePort = 80 'Port
Winsock1.Connect 'Connection
End Sub
Private Sub Winsock1_Connect()
Dim CommandeHTTP As String
Dim URLPageWeb As String
URLPageWeb = "http://" & TxtUrl & "/"
CommandeHTTP = "GET " & URLPageWeb & " HTTP/1.0" & vbCrLf & "Accept: */*" & vbCrLf & "Accept: text/html" & vbCrLf & vbCrLf
Label1 = "Envoie de la requéte..."
Winsock1.SendData CommandeHTTP
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim HTTPDonnees As String
Label1 = "reception en cours... " & Len(Code)
Winsock1.GetData HTTPDonnees, vbString
Code.Text = Code.Text & HTTPDonnees
End Sub
Mais je ne sais pas comment faire pour attendre la fin de la recuperation du code source quand je suis dans ma procedure...
2 option se porte a moi :
- soit je trouve un moyen d'attendre dans ma procedure la fin de la recuperation du code source
- soit je trouve un moyen de faire une fonction avec ce mon code winsock que j'apellerai dans ma procedure
Le problème c'est que je ne sais pas comment faire. Pouvez vous m'aider ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 sept. 2006 à 20:27
une idée....
' http://www.vbfrance.com/codes/RECUPERER-PAGE-WEB-HTML-AVEC-WINSOCK_86.aspx '
Option Explicit
'
Private Sub Command1_Click()
Winsock1.Close
Winsock1.RemoteHost = "www.vbfrance.com"
Winsock1.RemotePort = 80
Winsock1.Connect
End Sub
'
Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub
'
Private Sub Winsock1_Connect()
Dim CommandeHTTP As String
Dim URLPageWeb As String
URLPageWeb = "http://www.vbfrance.com/"
CommandeHTTP = "GET " & URLPageWeb & " HTTP/1.0" & vbCrLf & "Accept: */*" & vbCrLf & "Accept: text/html" & vbCrLf & vbCrLf
Winsock1.SendData CommandeHTTP
End Sub
'
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim HTTPDonnees As String
Winsock1.GetData HTTPDonnees, vbString
RTB.Text = RTB.Text & HTTPDonnees
End Sub
'
Private Sub Winsock1_Close()
Winsock1.Close
DoEvents
Call SuiteDuCode
End Sub
'
Private Sub SuiteDuCode()
MsgBox "là ta suite.."
' blabla
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 6 sept. 2006 à 19:58
Salut
Le marqueur de fin est un double vbCrLf.
Suffit donc d'attendre que ton HTTPDonnees contienne cette chaine :
If Instr(HTTPDonnees, vbCrLf & vbCrLf) > 0 Then MsgBox "Terminado !"
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
Private Sub Command1_Click()
Winsock1.Close 'Fermeture de winsock
Label1 = "Récupération du code src en cours..."
Code.Text = vbNullString
Winsock1.RemoteHost = TxtUrl 'Url
Winsock1.RemotePort = 80 'Port
Winsock1.Connect 'Connection
While Instr(HTTPDonnees, vbCrLf & vbCrLf) = 0
do events
wend
msgbox "truc"
End Sub
Private Sub Winsock1_Connect()
Dim CommandeHTTP As String
Dim URLPageWeb As String
URLPageWeb = "http://" & TxtUrl & "/"
CommandeHTTP
= "GET " & URLPageWeb & " HTTP/1.0" & vbCrLf & "Accept:
*/*" & vbCrLf & "Accept: text/html" & vbCrLf & vbCrLf
Label1 = "Envoie de la requéte..."
Winsock1.SendData CommandeHTTP
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim HTTPDonnees As String
Label1 = "reception en cours... " & Len(Code)
Winsock1.GetData HTTPDonnees, vbString
Code.Text = Code.Text & HTTPDonnees
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 sept. 2006 à 19:40
Re
Tu n'as pas dû beaucoup reflechir :
Comment veux-tu que ton programme connaisse le contenu de HTTPDonnees dans ta Sub Command1_Click ?
Cette variable n'est déclarée que dans DataArrival !
Il faut donc faire le test sur Code.Text, et pas HTTPDonnees
De plus, je ne pense pas que VB accepte ta syntaxe de "Do Events" puisque la commande réelle est DoEvents (sans espace)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
lex1111
Messages postés220Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention26 octobre 20071 7 sept. 2006 à 19:46
J'avais déclaré la variable en public et j'avais aussi mis doevents mais comme ça ne marchait pas je n'ai pas enregistrer le projet et j'ai donc du refaire le code en posant ma question (ce qui explique les erreures)
lex1111
Messages postés220Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention26 octobre 20071 7 sept. 2006 à 21:15
youpi ça marche merci bcp... voila le code que j'utilise finalement
en fait il me manquait le winsock_close...je ne savais pas que avec ça on pouvait connaitre la fin de la recuperation du code...
------------------------------------------------------------------------------------------------
Public go As Boolean
Private Sub Command1_Click()
Code
Code
Code
Code
Winsock1.Close 'Fermeture de winsock
Label1 = "Récupération du code src en cours..."
Code.Text = vbNullString
Winsock1.RemoteHost = TxtUrl 'Url
Winsock1.RemotePort = 80 'Port
Winsock1.Connect 'Connection
go = False
Do
DoEvents
Loop Until go = True
Code
Code
Code
Code
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
go = True
End Sub
Private Sub Winsock1_Connect()
Dim CommandeHTTP As String
Dim URLPageWeb As String
URLPageWeb = "http://" & TxtUrl & "/"
CommandeHTTP = "GET " & URLPageWeb & " HTTP/1.0" & vbCrLf & "Accept: */*" & vbCrLf & "Accept: text/html" & vbCrLf & vbCrLf
Label1 = "Envoie de la requéte..."
Winsock1.SendData CommandeHTTP
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim HTTPDonnees As String
Label1 = "reception en cours... " & Len(Code)
Winsock1.GetData HTTPDonnees, vbString
Code.Text = Code.Text & HTTPDonnees
End Sub