WinHttpOpenRequest, fonction (winhttp.h)
La fonction WinHttpOpenRequest crée un handle de requête HTTP.
Syntaxe
WINHTTPAPI HINTERNET WinHttpOpenRequest(
[in] HINTERNET hConnect,
[in] LPCWSTR pwszVerb,
[in] LPCWSTR pwszObjectName,
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszReferrer,
[in] LPCWSTR *ppwszAcceptTypes,
[in] DWORD dwFlags
);
Paramètres
[in] hConnect
Handle de connexion HINTERNET à une session HTTP retournée par WinHttpConnect.
[in] pwszVerb
Pointeur vers une chaîne qui contient le verbe HTTP à utiliser dans la requête. Si ce paramètre a la valeur NULL, la fonction utilise GET comme verbe HTTP. Note Cette chaîne doit être en majuscules. De nombreux serveurs traitent les verbes HTTP comme respectant la casse, et les requêtes de commentaires (RFC) de l’Internet Engineering Task Force (IETF) écrivent ces verbes à l’aide de caractères majuscules uniquement.
[in] pwszObjectName
Pointeur vers une chaîne qui contient le nom de la ressource cible du verbe HTTP spécifié. Il s’agit généralement d’un nom de fichier, d’un module exécutable ou d’un spécificateur de recherche.
[in] pwszVersion
Pointeur vers une chaîne qui contient la version HTTP. Si ce paramètre a la valeur NULL, la fonction utilise HTTP/1.1.
[in] pwszReferrer
Pointeur vers une chaîne qui spécifie l’URL du document à partir duquel l’URL de la requête pwszObjectName a été obtenue. Si ce paramètre est défini sur WINHTTP_NO_REFERER, aucun document de référence n’est spécifié.
[in] ppwszAcceptTypes
Pointeur vers un tableau terminé par une valeur Null de pointeurs de chaîne qui spécifie les types de médias acceptés par le client. Si ce paramètre est défini sur WINHTTP_DEFAULT_ACCEPT_TYPES, aucun type n’est accepté par le client. En règle générale, les serveurs gèrent un manque de types acceptés comme indication que le client accepte uniquement les documents de type « text/* » ; c’est-à-dire uniquement des documents texte , pas d’images ou d’autres fichiers binaires. Pour obtenir la liste des types de médias valides, consultez Types de médias définis par l’IANA à l’adresse http://www.iana.org/assignments/media-types/.
[in] dwFlags
Valeur entière longue non signée qui contient les valeurs d’indicateur Internet. Il peut s’agir de l’une ou plusieurs des valeurs suivantes :
Valeur retournée
Retourne un handle de requête HTTP valide en cas de réussite, ou NULL si ce n’est pas le cas. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Parmi les codes d’erreur retournés figurent les suivants.
Code d'erreur | Description |
---|---|
|
Le type de handle fourni est incorrect pour cette opération. |
|
Une erreur interne s'est produite. |
|
L’URL n’est pas valide. |
|
L’opération a été annulée, généralement parce que le handle sur lequel la requête fonctionnait a été fermé avant la fin de l’opération. |
|
L’URL a spécifié un schéma autre que « http : » ou « https : ». |
|
La mémoire disponible était insuffisante pour terminer l’opération demandée. (Code d’erreur Windows) |
Remarques
La valeur de retour indique la réussite ou l’échec. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
La fonction WinHttpOpenRequest crée un nouveau handle de requête HTTP et stocke les paramètres spécifiés dans ce handle. Un handle de requête HTTP contient une demande à envoyer à un serveur HTTP et contient tous les en-têtes RFC822/MIME/HTTP à envoyer dans le cadre de la requête.
Si pwszVerb est défini sur « HEAD », l’en-tête Content-Length est ignoré.
Si une fonction de rappel status a été installée avec WinHttpSetStatusCallback, une notification WINHTTP_CALLBACK_STATUS_HANDLE_CREATED indique que WinHttpOpenRequest a créé un handle de demande.
Une fois l’application appelante terminée à l’aide du handle HINTERNET retourné par WinHttpOpenRequest, elle doit être fermée à l’aide de la fonction WinHttpCloseHandle .
Exemples
Cet exemple montre comment obtenir un handle HINTERNET , ouvrir une session HTTP, créer un en-tête de requête et envoyer cet en-tête au serveur.
BOOL bResults = FALSE;
HINTERNET hSession = NULL,
hConnect = NULL,
hRequest = NULL;
// Use WinHttpOpen to obtain a session handle.
hSession = WinHttpOpen( L"A WinHTTP Example Program/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
// Specify an HTTP server.
if (hSession)
hConnect = WinHttpConnect( hSession, L"www.wingtiptoys.com",
INTERNET_DEFAULT_HTTP_PORT, 0);
// Create an HTTP Request handle.
if (hConnect)
hRequest = WinHttpOpenRequest( hConnect, L"PUT",
L"/writetst.txt",
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0);
// Send a Request.
if (hRequest)
bResults = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0, WINHTTP_NO_REQUEST_DATA, 0,
0, 0);
// PLACE ADDITIONAL CODE HERE.
// Report any errors.
if (!bResults)
printf( "Error %d has occurred.\n", GetLastError());
// Close any open handles.
if (hRequest) WinHttpCloseHandle(hRequest);
if (hConnect) WinHttpCloseHandle(hConnect);
if (hSession) WinHttpCloseHandle(hSession);
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel avec SP3 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003, Windows 2000 Server avec SP3 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winhttp.h |
Bibliothèque | Winhttp.lib |
DLL | Winhttp.dll |
Composant redistribuable | WinHTTP 5.0 et Internet Explorer 5.01 ou version ultérieure sur Windows XP et Windows 2000. |