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 |
---|---|
|
No se pudo encontrar el encabezado solicitado. |
|
No se puede llevar a cabo la operación solicitada porque el identificador proporcionado no está en el estado correcto. |
|
El tipo de identificador proporcionado es incorrecto para esta operación. |
|
Se ha producido un error interno. |
|
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 |