Compartir a través de


Función WinHttpQueryHeadersEx (winhttp.h)

Recupera información de encabezado asociada a una solicitud HTTP; ofrece una manera de recuperar cadenas de nombre y valor de encabezado analizados.

Sintaxis

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
);

Parámetros

hRequest

Tipo: _In_ HINTERNET

Identificador de solicitud devuelto por WinHttpOpenRequest. La llamada a WinHttpReceiveResponse para este identificador debe haberse completado antes de llamar a WinHttpQueryHeadersEx. Si está consultando tráileres, la llamada winHttpReadData para este identificador debe devolver 0 bytes leídos antes de llamar a WinHttpQueryHeadersEx.

dwInfoLevel

Tipo: _In_ DWORD

Valor de tipo DWORD que especifica una combinación de marcas de atributo y modificador enumeradas en el tema Marcas de información de consulta. Estos marcadores de atributo y modificador indican la información que se solicita y cómo se va a dar formato.

Nota

Las marcas siguientes devuelven ERROR_INVALID_PARAMETER si se usan: WINHTTP_QUERY_VERSION, WINHTTP_QUERY_STATUS_CODE, WINHTTP_QUERY_STATUS_TEXT, WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_QUERY_FLAG_NUMBER64, WINHTTP_QUERY_FLAG_SYSTEMTIME y WINHTTP_QUERY_RAW_HEADERS_CRLF.

La marca WINHTTP_QUERY_EX_ALL_HEADERS devuelve todos los encabezados.

Si no está consultando todos los encabezados, puede pasar la marca correspondiente a un encabezado conocido específico, o bien puede pasar WINHTTP_QUERY_CUSTOM junto con una cadena para el nombre de encabezado en el parámetro pHeaderName .

Pasar WINHTTP_QUERY_FLAG_WIRE_ENCODING devuelve los encabezados en el formato en el que se envían a través de la conexión (debe tener acceso a los miembros psz* de WINHTTP_EXTENDED_HEADER y WINHTTP_HEADER_NAME). Si no establece la marca de codificación de conexión, el comportamiento predeterminado es devolver encabezados en formato Unicode (debe tener acceso a los miembros pwsz* de WINHTTP_EXTENDED_HEADER y WINHTTP_HEADER_NAME).

ullFlags

Tipo: _In_ ULONGLONG

Reservado. Establecer en 0.

uiCodePage

Tipo: _In_ UINT

Página de códigos que se va a usar para la conversión Unicode. Debe pasar 0 para el comportamiento predeterminado (CP_ACP) o al usar WINHTTP_QUERY_FLAG_WIRE_ENCODING. No se realiza ninguna validación para este parámetro.

pdwIndex

Tipo: _Inout_opt_ PDWORD

Dirección de un índice de base cero que se usa para enumerar varios encabezados con el mismo nombre. Al llamar a la función , este parámetro es el índice del encabezado especificado que se va a devolver. Cuando la función devuelve, este parámetro es el índice del siguiente encabezado. Pase NULL para acceder a la primera instancia de un encabezado determinado.

pHeaderName

Tipo: _Inout_opt_ PWINHTTP_HEADER_NAME

Dirección de una estructura de WINHTTP_HEADER_NAME .

Establezca pHeaderName en NULL al recuperar todos los encabezados. Si este parámetro no es NULL y pasa WINHTTP_QUERY_CUSTOM con dwInfoLevel, WinHttpQueryHeadersEx solo recuperará el encabezado especificado por este parámetro. Si pasa WINHTTP_QUERY_FLAG_WIRE_ENCODING con dwInfoLevel, debe usar el miembro pszName (si la marca no está establecida, use el miembro pwszName ).

pBuffer

Tipo: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID

Búfer proporcionado por el autor de la llamada para almacenar los punteros de encabezado analizados y los encabezados. Si este parámetro es NULL o demasiado pequeño, WinHttpQueryHeadersEx devuelve ERROR_INSUFFICIENT_BUFFER y el parámetro pdwBufferLength contiene el tamaño de búfer necesario en bytes.

pdwBufferLength

Tipo: _Inout_ PDWORD

Longitud del búfer proporcionado por el autor de la llamada. Si pBuffer es NULL o demasiado pequeño, WinHttpQueryHeadersEx escribe el tamaño de búfer necesario en bytes en este parámetro.

ppHeaders

Tipo: _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*

Identificador de una matriz de WINHTTP_EXTENDED_HEADER para acceder a los nombres o valores de encabezado analizados. Debe pasar la dirección de un puntero de WINHTTP_EXTENDED_HEADER que se inicializa en NULL. Al finalizar, debe acceder a los parámetros pszName/pszValue si usa WINHTTP_QUERY_FLAG_WIRE_ENCODING y pwszName/pwszValue de lo contrario.

pdwHeadersCount

Tipo: _Out_ PDWORD

Número de encabezados devueltos. No debe intentar acceder más allá ppHeaders[cHeaders - 1]de , ya que está fuera de los límites de la matriz.

Valor devuelto

Código de estado que indica el resultado de la operación. Entre los códigos de error devueltos se incluyen los siguientes.

Código de error Descripción
ERROR_WINHTTP_HEADER_NOT_FOUND
No se pudo encontrar el encabezado solicitado.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
No se puede llevar a cabo la operación solicitada porque el identificador proporcionado no está en el estado correcto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
El tipo de identificador proporcionado es incorrecto para esta operación.
ERROR_WINHTTP_INTERNAL_ERROR
Se ha producido un error interno.
ERROR_NOT_ENOUGH_MEMORY
No había suficiente memoria disponible para completar la operación solicitada. (Código de error de Windows)

Comentarios

WinHttpQueryHeadersEx se basa en la funcionalidad de WinHttpQueryHeaders. WinHttpQueryHeaders permite consultar encabezados de solicitud o respuesta (o finalizadores de respuesta) en forma de cadena, un número (DWORD) o una marca de tiempo (SYSTEMTIME). La consulta de todos los encabezados devuelve una sola cadena serializada con caracteres CRLF o NULL que delimitan distintos encabezados. Por ejemplo, "Name1: value1\r\nName2: value2\r\n\r\n". O "Name1: value1\0Name2: value2\0\0". Se usa un delimitador doble para indicar el final de la cadena.

WinHttpQueryHeadersEx proporciona una manera de recuperar cadenas de valor y nombre de encabezado analizados.

Requisitos

Requisito Value
Cliente mínimo compatible compilación 20348 de Windows 10
Servidor mínimo compatible compilación 20348 de Windows 10
Plataforma de destino Windows
Encabezado winhttp.h
Library Winhttp.lib
Archivo DLL Winhttp.dll