Função WinHttpQueryHeadersEx (winhttp.h)
Recupera informações de cabeçalho associadas a uma solicitação HTTP; oferece uma maneira de recuperar o nome do cabeçalho analisado e as cadeias de caracteres de valor.
Sintaxe
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 solicitação retornado por WinHttpOpenRequest. A chamada WinHttpReceiveResponse para esse identificador deve ter sido concluída antes de chamar WinHttpQueryHeadersEx. Se você estiver consultando trailers, a chamada WinHttpReadData para esse identificador deverá retornar 0 bytes lidos antes de chamar WinHttpQueryHeadersEx.
dwInfoLevel
Tipo: _In_ DWORD
Valor do tipo DWORD que especifica uma combinação de sinalizadores de atributo e modificador listados no tópico Sinalizadores de informações de consulta . Esses sinalizadores de atributo e modificador indicam as informações que estão sendo solicitadas e como elas devem ser formatadas.
Observação
Os sinalizadores a seguir retornam ERROR_INVALID_PARAMETER se usados: WINHTTP_QUERY_VERSION, WINHTTP_QUERY_STATUS_CODE, WINHTTP_QUERY_STATUS_TEXT, WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_QUERY_FLAG_NUMBER64, WINHTTP_QUERY_FLAG_SYSTEMTIME e WINHTTP_QUERY_RAW_HEADERS_CRLF.
O sinalizador WINHTTP_QUERY_EX_ALL_HEADERS retorna todos os cabeçalhos.
Se você não estiver consultando todos os cabeçalhos, poderá passar o sinalizador correspondente a um cabeçalho conhecido específico ou passar WINHTTP_QUERY_CUSTOM junto com uma cadeia de caracteres para o nome do cabeçalho no parâmetro pHeaderName .
Passar WINHTTP_QUERY_FLAG_WIRE_ENCODING retorna os cabeçalhos no formato em que são enviados pelo fio (você deve acessar/definir os membros psz* de WINHTTP_EXTENDED_HEADER e WINHTTP_HEADER_NAME). Se você não definir o sinalizador de codificação de fio, o comportamento padrão será retornar cabeçalhos no formato Unicode (você deve acessar/definir os membros pwsz* de WINHTTP_EXTENDED_HEADER e WINHTTP_HEADER_NAME).
ullFlags
Tipo: _In_ ULONG
Reservado. Defina como 0.
uiCodePage
Tipo: _In_ UINT
A página de código a ser usada para conversão Unicode. Você deve passar 0 para comportamento padrão (CP_ACP) ou ao usar WINHTTP_QUERY_FLAG_WIRE_ENCODING. Nenhuma validação é feita para esse parâmetro.
pdwIndex
Tipo: _Inout_opt_ PDWORD
O endereço de um índice baseado em zero usado para enumerar vários cabeçalhos com o mesmo nome. Ao chamar a função, esse parâmetro é o índice do cabeçalho especificado a ser retornado. Quando a função retorna, esse parâmetro é o índice do próximo cabeçalho. Passe NULL para acessar a primeira instância de um determinado cabeçalho.
pHeaderName
Tipo: _Inout_opt_ PWINHTTP_HEADER_NAME
O endereço de uma estrutura WINHTTP_HEADER_NAME .
Defina pHeaderName como NULL ao recuperar todos os cabeçalhos. Se esse parâmetro não for NULL e você passar WINHTTP_QUERY_CUSTOM com dwInfoLevel, WinHttpQueryHeadersEx recuperará apenas o cabeçalho especificado por esse parâmetro. Se você passar WINHTTP_QUERY_FLAG_WIRE_ENCODING com dwInfoLevel, deverá usar o membro pszName (se o sinalizador não estiver definido, use o membro pwszName ).
pBuffer
Tipo: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID
Um buffer fornecido pelo chamador para armazenar os ponteiros de cabeçalho analisados e os cabeçalhos. Se esse parâmetro for NULL ou muito pequeno, WinHttpQueryHeadersEx retornará ERROR_INSUFFICIENT_BUFFER e o parâmetro pdwBufferLength conterá o tamanho do buffer necessário em bytes.
pdwBufferLength
Tipo: _Inout_ PDWORD
Comprimento do buffer fornecido pelo chamador. Se pBuffer for NULL ou muito pequeno, WinHttpQueryHeadersEx gravará o tamanho do buffer necessário em bytes nesse parâmetro.
ppHeaders
Tipo: _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*
Um identificador para uma matriz de WINHTTP_EXTENDED_HEADER para acessar nomes/valores de cabeçalho analisados. Você deve passar o endereço de um ponteiro WINHTTP_EXTENDED_HEADER inicializado para NULL. Após a conclusão, você deverá acessar os parâmetros pszName/pszValue se estiver usando WINHTTP_QUERY_FLAG_WIRE_ENCODING e pwszName/pwszValue caso contrário.
pdwHeadersCount
Tipo: _Out_ PDWORD
O número de cabeçalhos retornados. Você não deve tentar acessar além ppHeaders[cHeaders - 1]
de , porque isso está fora dos limites da matriz.
Retornar valor
Um código status que indica o resultado da operação. Entre os códigos de erro retornados estão os seguintes.
Código do Erro | Descrição |
---|---|
|
Não foi possível localizar o cabeçalho solicitado. |
|
A operação solicitada não pode ser executada porque o identificador fornecido não está no estado correto. |
|
O tipo de identificador fornecido está incorreto para esta operação. |
|
Ocorreu um erro interno. |
|
Não havia memória suficiente disponível para concluir a operação solicitada. (Código de erro do Windows) |
Comentários
WinHttpQueryHeadersEx baseia-se na funcionalidade de WinHttpQueryHeaders. WinHttpQueryHeaders permite consultar cabeçalhos de solicitação ou resposta (ou trailers de resposta) na forma de uma cadeia de caracteres, um número (DWORD) ou um carimbo de data/hora (SYSTEMTIME). A consulta para todos os cabeçalhos retorna uma única cadeia de caracteres serializada com caracteres CRLF ou NULL delimitando cabeçalhos diferentes. Por exemplo, "Name1: value1\r\nName2: value2\r\n\r\n". Ou "Name1: value1\0Name2: value2\0\0". Um delimitador duplo é usado para indicar o final da cadeia de caracteres.
WinHttpQueryHeadersEx oferece uma maneira de recuperar o nome do cabeçalho analisado e as cadeias de caracteres de valor.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Plataforma de Destino | Windows |
Cabeçalho | winhttp.h |
Biblioteca | Winhttp.lib |
DLL | Winhttp.dll |