Partager via


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
ERROR_WINHTTP_HEADER_NOT_FOUND
Impossible de localiser l’en-tête demandé.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
L’opération demandée ne peut pas être effectuée, car le handle fourni n’est pas dans l’état correct.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Le type de handle fourni est incorrect pour cette opération.
ERROR_WINHTTP_INTERNAL_ERROR
Une erreur interne s'est produite.
ERROR_NOT_ENOUGH_MEMORY
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