Je ne parle pas de téléchargement, mais d'un Source Visual Basic qui permet de mettre le contenu d'un document dont vous connaissez l'URL dans une variable, à vous d'en faire ce que vous voulez. (doc HTML, Image, Feuille de calcul Exel...)
Programmation > Visual Basic
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Récupération de documents sur un serveur internet
  Auteur : Philippe PETIT

Je ne parle pas de téléchargement, mais d'un Source Visual Basic qui permet de mettre le contenu d'un document dont vous connaissez l'URL dans une variable, à vous d'en faire ce que vous voulez. (doc HTML, Image, Feuille de calcul Exel...)

Publicité 
   Cette article est consacré à la récupération de documents via internet.

   Je ne parle pas de téléchargement, mais d'un script PERL et d'un Source Visual Basic qui permetent de mettre le contenu d'un document dont vous connaissez l'URL dans une variable, à vous d'en faire ce que vous voulez.

   Vous souhaitez récupérer sur internet un document pour pouvoir le traité de façon automatique.
   Rien de plus simple, les codes suivants interrogent le serveur, sur lequel se trouve le document, en se faisant passer pour Microsoft Internet Explorer sous Windows 98 ou autres.
   Le serveur renvoi donc une page comme si vous naviguiez sur le net, et pas une page spécifique pour les robots.
   Le résultat est stocké dans une variable, après c'est à vous de jouer.

   Vous pouvez récupérer n'importe quel document, HTML, Image, Une feuille de calcul Excel... (du moment qu'il est accessible pour un navigateur, il l'est pour ces codes)

Le source Visual Basic:

Function GetHTTPFile(ByVal URL As String, ByVal StrUserAgent As String) As String

    ' URL correspond au chemin complet du document exemple: http://www.domaine.ext/répertoire/ document.pl?Param=Exemple&Param2=test
    ' StrUserAgent correspond à la définition du navigateur exemple: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)

    Dim hSession As Long
    Dim hUrlFile As Long
    Dim bBoucle As Boolean
    Dim sReadBuf As String * 4096
    Dim Buffer As String
    Dim OctetsLus As Long

    Screen.MousePointer = vbHourglass

    ' Ouverture de la session
    hSession = InternetOpen(StrUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
    ' Envoi de la demande
    hUrlFile = InternetOpenUrl(hSession, URL, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)

    ' La réponse arrive par paquet, il faut donc reconstituer le document

    Buffer = ""
    bBoucle = True
    While bBoucle And hUrlFile > 0

      DoEvents
      sReadBuf = ""
      bBoucle = InternetReadFile(hUrlFile, sReadBuf, 4096&, OctetsLus)
      Buffer = Buffer + Left$(sReadBuf, OctetsLus)
      If OctetsLus = 0 Then bBoucle = False
    Wend

    ' Il faut toujours refermer ce que l'on ouvre
    InternetCloseHandle (hUrlFile)
    InternetCloseHandle (hSession)

    Screen.MousePointer = 0

    GetHTTPFile = Buffer

End Function

Il ne vous reste donc qu'a appeler la fonction

MonDocument = GetHTTPFile("http://www.domaine.ext/répertoire/ document.pl?Param=Exemple", "Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)");

Et a interpréter MonDocument

N'oubliez pas de déclarer les fonctions et les variables :

   Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _

    (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, _
    ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
   Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
   Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _
    (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, _
    ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
   Public Declare Function InternetReadFile Lib "wininet.dll" _
    (ByVal hFile As Long, ByVal lpBuffer As String, ByVal dwNumberOfBytesToRead As Long, _
    lNumberOfBytesRead As Long) As Integer

   Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0 ' utiliser info de config de la base de registre
   Public Const INTERNET_FLAG_EXISITING_CONNECT = &H20000000
   Public Const INTERNET_FLAG_RELOAD = &H80000000 ' read from wire even if locally cached

Télécharger le source

A lire aussi sur Devparadise.com :
  • ASP et la création d'images à la volée
  • Visioneuse d'image en Visual Basic
  • Lecture de la ligne de commande en Visual Basic.
  • Génération de fichiers PDF à la volée.
  • Service NT en Visual Basic
  • A télécharger aussi sur Devparadise.com :
  • Contrôleur d'attributs (Source VB)
  • Visioneuse d'image en Visual Basic
  • Flash Objects 0.9
  • VB Image Map ActiveX Control
  • VBOutils 2.21

  • © 1997-2008 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    HTTP,VB