Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

Fonction HttpOpenRequest

Declare Function HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" ( _
                 
ByVal hHttpSession As Long, _
                 ByVal sVerb As String, _
                 ByVal sObjectName As String, _
                 ByVal sVersion As String, _
                 ByVal sReferer As String, _
                 ByVal something As Long, _
                 ByVal lFlags As Long, _
                 ByVal lContext As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 4.0
. Windows 2000/XP : Oui

Description :
Cette fonction permet de créer un pointeur pour une requête de type HTTP.
hHttpSession est un pointeur vers une session Internet (retourné par InternetConnect),
sVerb indique la méthode de dialogue utilisée POST ou GET (par défaut),
sObjectName spécifie l'objet à atteindre (page web, ...),
sVersion permet de préciser la version du protocole (par défaut "HTTP/1.0"),
sReferer est une chaîne qui permet de préciser d'ou vient l'appel courant,
something est un pointeur vers une chaîne indiquant les types de média supportés par le client,
lFlags représente une combinaison de constantes (voir ci-dessous),
lContext est un pointeur vers une valeur définie par l'application.

En cas d'échec, la fonction retourne 0.


ConstanteValeur Définition
INTERNET_FLAG_EXISTING_CONNECT&H20000000 Utilise un objet InternetConnect existant. Utile seulement pour les opérations de type FTP.
INTERNET_FLAG_HYPERLINK&H400 Force un rechargement - dans le cas ou il n'y a pas de date d'expiration sur l'élément.
INTERNET_FLAG_IGNORE_CERT_CN_INVALID&H1000 Désactive les fonctions de vérification SSL.
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID&H2000 Désactive la vérification de la validité du certificat de sécurité.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP&H8000 Désactive la détection du passage d'un mode HTTPS vers HTTP.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS&H4000 Désactive la détection du passage d'un mode HTTP vers HTTPS.
INTERNET_FLAG_KEEP_CONNECTION&H400000 Laisse la connexion ouverte (mode KEEP_ALIVE).
INTERNET_FLAG_NEED_FILE&H10 Force la création d'un fichier temporaire, si le fichier ne peut pas être mis en cache.
INTERNET_FLAG_NO_AUTH&H40000 N'effectue pas d'authentification en automatique.
INTERNET_FLAG_NO_AUTO_REDIRECT&H200000 Ne tiens pas compte des demandes de redirection.
INTERNET_FLAG_NO_CACHE_WRITE&H4000000 N'ajoute pas l'élément retourné dans le cache.
INTERNET_FLAG_NO_COOKIES&H80000 Désactive l'utilisation des cookies (blocage en lecture et en écriture).
INTERNET_FLAG_NO_UI&H200 Désactive la boîte de dialogue des cookies.
INTERNET_FLAG_PASSIVE&H8000000 Utilise le mode passif (accès FTP).
INTERNET_FLAG_PRAGMA_NOCACHE&H100 La requête sera effectuée par le serveur d'origine même s'il existe une copie dans le cache.
INTERNET_FLAG_RAW_DATA&H40000000 Retourne les données suivant leur structure d'origine, sinon, la fonction retourne une version de type HTML.
INTERNET_FLAG_RELOAD&H80000000 Force un chargement à partir du serveur d'origine et non pas depuis le cache.
INTERNET_FLAG_RESYNCHRONIZE&H800 Recharge une ressource si elle a été modifié depuis sa dernière récupération.
INTERNET_FLAG_SECURE&H800000 Utilise une connexion de type sécurisé (requête HTTP seulement).

Exemple d'utilisation :

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

Declare Function
InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
                
ByVal hInternetSession As Long, _
                
ByVal sServerName As String, _
                
ByVal nServerPort As Integer, _
                
ByVal sUsername As String, _
                
ByVal sPassword As String, _
                
ByVal lService As Long, _
                
ByVal lFlags As Long, _
                
ByVal lContext As Long) As Long

Declare Function
HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" ( _
                
ByVal hHttpSession As Long, _
                
ByVal sVerb As String, _
                
ByVal sObjectName As String, _
                
ByVal sVersion As String, _
                
ByVal sReferer As String, _
                
ByVal something As Long, _
                
ByVal lFlags As Long, _
                
ByVal lContext As Long) As Long

Declare Function
HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" ( _
                
ByVal hHttpRequest As Long, _
                
ByVal sHeaders As String, _
                
ByVal lHeadersLength As Long, _
                
ByVal sOptional As String, _
                
ByVal lOptionalLength As Long) As Long

Declare Function
InternetReadFile Lib "wininet.dll" ( _
                
ByVal hFile As Long, _
                
ByVal sBuffer As String, _
                
ByVal lNumBytesToRead As Long, _
                 lNumberOfBytesRead
As Long) As Long

Declare Function
HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" ( _
                
ByVal hHttpRequest As Long, _
                
ByVal lInfoLevel As Long, _
                
ByRef sBuffer As Any, _
                
ByRef lBufferLength As Long, _
                
ByRef lIndex As Long) As Integer

Declare Function
InternetCloseHandle Lib "wininet.dll" ( _
                   
ByVal hInet As Long) As Integer

Const
INTERNET_FLAG_SECURE = &H800000
Const INTERNET_FLAG_IGNORE_CERT_CN_INVALID = &H1000
Const INTERNET_FLAG_RELOAD = &H80000000

Const HTTP_QUERY_STATUS_CODE = 19
Const HTTP_QUERY_STATUS_TEXT = 20

Const INTERNET_SERVICE_HTTP = 3

Const INTERNET_OPEN_TYPE_PRECONFIG = 0

Public Enum INTERNET_DEF
INTERNET_DEFAULT_HTTP_PORT = 80
INTERNET_DEFAULT_HTTPS_PORT = 443
End Enum

Public Function
UrlPost(stURL As String, stPostData As String, _
                stStatusCode
As String, stStatusText As String, _
               
Optional lgInternet As INTERNET_DEF = INTERNET_DEFAULT_HTTP_PORT, _
               
Optional stUser As String = vbNullString, _
               
Optional stPass As String = vbNullString) As String
' Cette fonction permet lire le contenu d'une URL.
' Elle permet éventuellement aussi de poster des données sur un formulaire
' et peut fonctionner en mode HTTP et HTTPS
Dim stRead As String * 2048, lgRead As Long
Dim
stLoad As String
Dim
blDoLoop As Boolean
Dim
hISession As Long, hIConnect As Long, hRequest As Long
Dim
stUrlDeb As String, stUrlFin As String
Dim
stMethod As String
Dim
stPost As String
Dim
lgFlags As Long, lgRep As Long

' Découpage de l'URL en serveur et fichier
If (InStr(1, stURL, "/") > 0) Then
   
stUrlDeb = Replace(LCase$(stURL), "http://", vbNullString)
    stUrlDeb = Replace(LCase$(stUrlDeb), "https://", vbNullString)
    stUrlFin = stUrlDeb
    stUrlDeb = Left$(stUrlDeb, InStr(1, stUrlDeb, "/") - 1)
    stUrlFin = Mid$(stUrlFin, InStr(1, stUrlFin, "/") + 1)
Else
   
stUrlDeb = stURL
    stUrlFin = vbNullString
End If
' Mise au point de la méthode d'envoi
If (stPostData <> vbNullString) Then
   
stPost = stPostData
    stMethod = "POST"
    stLoad = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
Else
   
stPost = vbNullString
    stMethod = "GET"
    stLoad = vbNullString
End If
If (
lgInternet = INTERNET_DEFAULT_HTTPS_PORT) Then
   
lgFlags = INTERNET_FLAG_SECURE Or _
              INTERNET_FLAG_IGNORE_CERT_CN_INVALID
Else
   
lgFlags = INTERNET_FLAG_RELOAD
End If

' Mise en place de la connexion Internet
hISession = InternetOpen(stUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, _
                         vbNullString, vbNullString, 0)
If CBool(hISession) Then
   
' Ouverture de la connexion internet
   
hIConnect = InternetConnect(hISession, _
                                stUrlDeb, _
                                lgInternet, _
                                stUser, _
                                stPass, _
                                INTERNET_SERVICE_HTTP, _
                                0, _
                                0)
   
' Préparation de l'ouverture de la page
   
hRequest = HttpOpenRequest(hIConnect, _
                               stMethod, _
                               stUrlFin, _
                               "HTTP/1.0", _
                               vbNullString, _
                               0, _
                               lgFlags, _
                               0)
   
' Lancement de l'URL (avec les paramètres le cas échéant)
   
lgRep = HttpSendRequest(hRequest, stLoad, Len(stLoad), stPost, Len(stPost))
   
' Récupération du texte/contenu de la page
   
blDoLoop = True
   
stLoad = vbNullString
   
Do While blDoLoop
        stRead = vbNullString
        blDoLoop = InternetReadFile(hRequest, stRead, Len(stRead), lgRead)
        stLoad = stLoad & Left$(stRead, lgRead)
       
If Not CBool(lgRead) Then blDoLoop = False
    Loop
   
' Code http de retour (statut)
   
stStatusCode = Space$(1024)
    lgRead = 1024
    HttpQueryInfo hRequest, HTTP_QUERY_STATUS_CODE,
ByVal stStatusCode, lgRead, 0
    stStatusCode = Left$(stStatusCode, lgRead)
   
' Texte associé
   
stStatusText = Space$(1024)
    lgRead = 1024
    HttpQueryInfo hRequest, HTTP_QUERY_STATUS_TEXT,
ByVal stStatusText, lgRead, 0
    stStatusText = Left$(stStatusText, lgRead)
End If

' Fermeture des connexions
On Error Resume Next
InternetCloseHandle hISession
InternetCloseHandle hIConnect
InternetCloseHandle hRequest
On Error GoTo 0

' Retourne le contenu de la page chargée
UrlPost = stLoad
End Function

Retour à la liste des API

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr