cs_nicolas12
Messages postés7Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention 4 août 2003
-
25 juil. 2003 à 16:41
cs_nicolas12
Messages postés7Date d'inscriptionlundi 2 juin 2003StatutMembreDernière intervention 4 août 2003
-
26 juil. 2003 à 11:08
bonjour
j'ais un petit problème de lecture d'une url...
je souhaite recuperer sous forme d'une chaine de caractère le flux de retour apres avoir passer une url à une fonction
certaine des methodes que je donne apres marche tres bien sur mon lieu de travail mais fonctionne tres mal ou en parti chez moi... c'est cela qui me pose un problème
chez moi j'ais une connection wanadoo par le cable par le protocole pppoe sous windows XP(le cable sort du mur pour arriver a un boitier puis un cable rj45 y sort pour aller sur une carte réseau classic)... peut etre cela permet d'aider à comprendre
exemple de programation:
* 1
j'ais commencer par la facon la plus simple en utilisant le control "Microsoft Internet Transfert Control 6.0 (sp4)" avec le code suivant:
strHtml = Me.Inet1.OpenURL(strUrl)
ce code marche sans aucun problème de mon lieu de travail, mais de chez moi quand l'execution passe sur cette ligne de code plus rien ne se fait et impossible de reprendre la main... je suis obliger de kill la tache pour relancer VB...
une idée du pourquoi comment?
* 2
par deception de ne pouvoir utiliser ce simple code je me sis lancer par les api de wininet.dll avec le code suivant:
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" ( _
ByVal hInternetSession As Long, ByVal sUrl As String, _
ByVal sHeaders As String, ByVal lHeadersLength As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" ( _
ByVal hFile As Long, ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" ( _
ByVal hInet As Long) As Integer
Private Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000 ' Pas d'écriture en cache
Private lgSession As Long
Private Function GetUrlWininet(stUrl As String) As String
' Récupère le contenu d'une page/d'un fichier sur internet
Dim lgInternet As Long , lgSession As Long
Dim stBuf As String
Dim inRes As Integer
Dim lgRet As Long
Dim stTotal As String
stTotal = vbNullString
' Récupère un pointeur vers la connexion internet courante
lgSession = InternetOpen("VBTagEdit", 1, vbNullString, vbNullString, 0)
If lgSession Then
' Récupère un pointeur vers l'URL
lgInternet = InternetOpenUrl(lgSession, stUrl, vbNullString, 0, INTERNET_FLAG_NO_CACHE_WRITE, 0)
stBuf = Space(1024)
If lgInternet Then
Do
' Lecture de la page dans le buffer (par bloc de 1024)
inRes = InternetReadFile(lgInternet, stBuf, Len(stBuf), lgRet)
stTotal = stTotal & Mid(stBuf, 1, lgRet)
Loop While (lgRet = Len(stBuf))
End If
' Libération du pointeur
inRes = InternetCloseHandle(lgInternet)
End If
' Retourne le résultat
GetUrlWininet= stTotal
End Function
ce code marche sans aucun problème de mon lieu de travail, mais de chez moi que une partie du flux html (environ 4000 characteres sur 7000 en tout) mais cela ne fait pas planter vb et permet de recuperer à la volé une succession de flux html mais ils sont incomplets... alors k'ils sont complet sur mon lieu de travail
une idée du pourquoi comment?
* 3
de plus en plus dessu j'ais pris des renseignement a propos de winsock et j'ais tester plusieur code chez moi uniquement sans que cela marche.... mais bon j'avoue etre un peut destabilisé pas cette dll et de toutes les fonctions qu'elle possede donc il est possible que je m'y souis pris comme un manche :)
* 4
une 4ieme solution serais de recuperer peut etre sous forme d'objet ma connection en cour que je vois dans le systray de chez moi mais la encore je ne sait absolument pas comment proceder....
------------------
en conclusion
je suis un peut perdu et surtout je ne comprend pas pourquoi des methodes simple à apliquer ne fonctionne pas ou pas entierrement chez moi (ce qui est le but)
si vous pouvez m'aider peut etre simplement en me mettant sur une piste... sur un lien... sur une experience similaire... ou pour que je vous considere comme un dieux en me donnant un code qui fonctionnera tout de suite ;)
cs_Houzefa
Messages postés453Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention 9 juillet 20042 25 juil. 2003 à 21:42
bizarre...
peut-etre que tes dlls chez toi sont "défectueuses" (bah oui c encore + bizarre). essaye de copier les dlls de ton lieu de travail chez toi pour avoir les memes.
sinon je peux pas vraiment t'aider...