Compartilhar via


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
ERROR_WINHTTP_HEADER_NOT_FOUND
Não foi possível localizar o cabeçalho solicitado.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
A operação solicitada não pode ser executada porque o identificador fornecido não está no estado correto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
O tipo de identificador fornecido está incorreto para esta operação.
ERROR_WINHTTP_INTERNAL_ERROR
Ocorreu um erro interno.
ERROR_NOT_ENOUGH_MEMORY
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