Fonction WinHttpQueryHeadersEx (winhttp.h)
Récupère les informations d’en-tête associées à une requête HTTP ; offre un moyen de récupérer les chaînes de valeur et de nom d’en-tête analysés.
Syntaxe
WINHTTPAPI DWORD WinHttpQueryHeadersEx(
HINTERNET hRequest,
DWORD dwInfoLevel,
ULONGLONG ullFlags,
UINT uiCodePage,
PDWORD pdwIndex,
PWINHTTP_HEADER_NAME pHeaderName,
PVOID pBuffer,
PDWORD pdwBufferLength,
PWINHTTP_EXTENDED_HEADER *ppHeaders,
PDWORD pdwHeadersCount
);
Paramètres
hRequest
Type : _In_ HINTERNET
Handle de requête retourné par WinHttpOpenRequest. L’appel WinHttpReceiveResponse pour ce handle doit être terminé avant d’appeler WinHttpQueryHeadersEx. Si vous interrogez des bandes-annonces, l’appel WinHttpReadData pour ce handle doit retourner 0 octet lu avant d’appeler WinHttpQueryHeadersEx.
dwInfoLevel
Type : _in_ DWORD
Valeur de type DWORD qui spécifie une combinaison d’indicateurs d’attribut et de modificateurs répertoriés dans la rubrique Indicateurs d’informations de requête. Ces indicateurs d’attribut et de modificateur indiquent les informations demandées et la façon dont elles doivent être mises en forme.
Notes
Les indicateurs suivants retournent ERROR_INVALID_PARAMETER si elles sont utilisées : WINHTTP_QUERY_VERSION, WINHTTP_QUERY_STATUS_CODE, WINHTTP_QUERY_STATUS_TEXT, WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_QUERY_FLAG_NUMBER64, WINHTTP_QUERY_FLAG_SYSTEMTIME et WINHTTP_QUERY_RAW_HEADERS_CRLF.
L’indicateur WINHTTP_QUERY_EX_ALL_HEADERS retourne tous les en-têtes.
Si vous ne interrogez pas tous les en-têtes, vous pouvez passer l’indicateur correspondant à un en-tête connu spécifique, ou passer WINHTTP_QUERY_CUSTOM avec une chaîne pour le nom d’en-tête dans le paramètre pHeaderName .
Le passage WINHTTP_QUERY_FLAG_WIRE_ENCODING retourne les en-têtes au format dans lequel ils sont envoyés via le câble (vous devez accéder/définir les membres psz* de WINHTTP_EXTENDED_HEADER et WINHTTP_HEADER_NAME). Si vous ne définissez pas l’indicateur d’encodage filaire, le comportement par défaut consiste à retourner des en-têtes au format Unicode (vous devez accéder aux membres pwsz* de WINHTTP_EXTENDED_HEADER et WINHTTP_HEADER_NAME).
ullFlags
Type : _In_ ULONGLONG
Réservé. Définit la valeur 0.
uiCodePage
Type : _In_ UINT
Page de code à utiliser pour la conversion Unicode. Vous devez passer 0 pour le comportement par défaut (CP_ACP) ou lorsque vous utilisez WINHTTP_QUERY_FLAG_WIRE_ENCODING. Aucune validation n’est effectuée pour ce paramètre.
pdwIndex
Type : _Inout_opt_ PDWORD
Adresse d’un index de base zéro utilisé pour énumérer plusieurs en-têtes portant le même nom. Lors de l’appel de la fonction, ce paramètre est l’index de l’en-tête spécifié à retourner. Lorsque la fonction retourne, ce paramètre est l’index de l’en-tête suivant. Passez la valeur NULL pour accéder au premier instance d’un en-tête donné.
pHeaderName
Type : _Inout_opt_ PWINHTTP_HEADER_NAME
Adresse d’une structure de WINHTTP_HEADER_NAME .
Définissez pHeaderName sur NULL lors de la récupération de tous les en-têtes. Si ce paramètre n’a pas la valeur NULL et que vous passez WINHTTP_QUERY_CUSTOM avec dwInfoLevel, WinHttpQueryHeadersEx récupère uniquement l’en-tête spécifié par ce paramètre. Si vous passez WINHTTP_QUERY_FLAG_WIRE_ENCODING avec dwInfoLevel, vous devez utiliser le membre pszName (si l’indicateur n’est pas défini, utilisez le membre pwszName ).
pBuffer
Type : _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID
Mémoire tampon fournie par l’appelant pour stocker les pointeurs d’en-tête analysés et les en-têtes. Si ce paramètre a la valeur NULL ou est trop petit, WinHttpQueryHeadersEx retourne ERROR_INSUFFICIENT_BUFFER, et le paramètre pdwBufferLength contient la taille de mémoire tampon requise en octets.
pdwBufferLength
Type : _Inout_ PDWORD
Longueur de la mémoire tampon fournie par l’appelant. Si pBuffer a la valeur NULL ou est trop petit, WinHttpQueryHeadersEx écrit la taille de mémoire tampon requise en octets dans ce paramètre.
ppHeaders
Type : _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*
Handle d’un tableau de WINHTTP_EXTENDED_HEADER pour accéder aux noms/valeurs d’en-tête analysés. Vous devez transmettre l’adresse d’un pointeur WINHTTP_EXTENDED_HEADER initialisé sur NULL. Une fois l’opération terminée, vous devez accéder aux paramètres pszName/pszValue si vous utilisez WINHTTP_QUERY_FLAG_WIRE_ENCODING et pwszName/pwszValue dans le cas contraire.
pdwHeadersCount
Type : _Out_ PDWORD
Nombre d’en-têtes retournés. Vous ne devez pas essayer d’accéder au-delà ppHeaders[cHeaders - 1]
de , car cela est hors limites du tableau.
Valeur retournée
Un code status indiquant le résultat de l’opération. Parmi les codes d’erreur retournés figurent les suivants.
Code d'erreur | Description |
---|---|
|
Impossible de localiser l’en-tête demandé. |
|
L’opération demandée ne peut pas être effectuée, car le handle fourni n’est pas dans l’état correct. |
|
Le type de handle fourni est incorrect pour cette opération. |
|
Une erreur interne s'est produite. |
|
La mémoire disponible n’était pas suffisante pour effectuer l’opération demandée. (Code d’erreur Windows) |
Remarques
WinHttpQueryHeadersEx s’appuie sur les fonctionnalités de WinHttpQueryHeaders. WinHttpQueryHeaders vous permet d’interroger des en-têtes de requête ou de réponse (ou des bandes-annonces de réponse) sous la forme d’une chaîne, d’un nombre (DWORD) ou d’un horodatage (SYSTEMTIME). L’interrogation de tous les en-têtes renvoie une chaîne sérialisée unique avec des caractères CRLF ou NULL délimitant différents en-têtes. Par exemple, « Name1 : value1\r\nName2 : value2\r\n\r\n ». Ou « Name1 : value1\0Name2 : value2\0\0 ». Un double délimiteur est utilisé pour indiquer la fin de la chaîne.
WinHttpQueryHeadersEx vous permet de récupérer les chaînes de valeur et de nom d’en-tête analysés.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 Build 20348 |
Serveur minimal pris en charge | Windows 10 Build 20348 |
Plateforme cible | Windows |
En-tête | winhttp.h |
Bibliothèque | Winhttp.lib |
DLL | Winhttp.dll |