Funzione WinHttpQueryHeadersEx (winhttp.h)

Recupera le informazioni di intestazione associate a una richiesta HTTP; offre un modo per recuperare le stringhe nome e valore dell'intestazione analizzate.

Sintassi

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

Parametri

hRequest

Tipo: _In_ RESOURCENET

Handle di richiesta restituito da WinHttpOpenRequest. La chiamata WinHttpReceiveResponse per questo handle deve essere stata completata prima di chiamare WinHttpQueryHeadersEx. Se si eseguono query sui trailer, la chiamata WinHttpReadData per questo handle deve restituire 0 byte letti prima di chiamare WinHttpQueryHeadersEx.

dwInfoLevel

Tipo: _In_ DWORD

Valore di tipo DWORD che specifica una combinazione di flag di attributo e modificatore elencati nell'argomento Flag di informazioni query. Questi flag di attributo e modificatore indicano le informazioni richieste e la relativa formattazione.

Nota

I flag seguenti restituiscono ERROR_INVALID_PARAMETER se usati: 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.

Il flag WINHTTP_QUERY_EX_ALL_HEADERS restituisce tutte le intestazioni.

Se non si esegue una query per tutte le intestazioni, è possibile passare il flag corrispondente a un'intestazione nota specifica oppure passare WINHTTP_QUERY_CUSTOM insieme a una stringa per il nome dell'intestazione nel parametro pHeaderName .

Passando WINHTTP_QUERY_FLAG_WIRE_ENCODING restituisce le intestazioni nel formato in cui vengono inviate in rete (è necessario accedere/impostare i membri psz* di WINHTTP_EXTENDED_HEADER e WINHTTP_HEADER_NAME). Se non imposti il flag di codifica wire, il comportamento predefinito consiste nel restituire intestazioni in formato Unicode (devi accedere/impostare i membri pwsz* di WINHTTP_EXTENDED_HEADER e WINHTTP_HEADER_NAME).

ullFlags

Tipo: _In_ ULONGLONG

Riservato. Impostare su 0.

uiCodePage

Tipo: _In_ UINT

Tabella codici da utilizzare per la conversione Unicode. È necessario passare 0 per il comportamento predefinito (CP_ACP) o quando si usa WINHTTP_QUERY_FLAG_WIRE_ENCODING. Non viene eseguita alcuna convalida per questo parametro.

pdwIndex

Tipo: _Inout_opt_ PDWORD

Indirizzo di un indice in base zero utilizzato per enumerare più intestazioni con lo stesso nome. Quando si chiama la funzione, questo parametro è l'indice dell'intestazione specificata da restituire. Quando la funzione viene restituita, questo parametro è l'indice dell'intestazione successiva. Passare NULL per accedere alla prima istanza di una determinata intestazione.

pHeaderName

Tipo: _Inout_opt_ PWINHTTP_HEADER_NAME

Indirizzo di una struttura WINHTTP_HEADER_NAME .

Impostare pHeaderName su NULL durante il recupero di tutte le intestazioni. Se questo parametro non è NULL e si passa WINHTTP_QUERY_CUSTOM con dwInfoLevel, WinHttpQueryHeadersEx recupererà solo l'intestazione specificata da questo parametro. Se si passa WINHTTP_QUERY_FLAG_WIRE_ENCODING con dwInfoLevel, è necessario usare il membro pszName (se il flag non è impostato, usare il membro pwszName ).

pBuffer

Tipo: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID

Buffer fornito dal chiamante per archiviare i puntatori di intestazione analizzati e le intestazioni. Se questo parametro è NULL o troppo piccolo, WinHttpQueryHeadersEx restituisce ERROR_INSUFFICIENT_BUFFER e il parametro pdwBufferLength contiene le dimensioni del buffer necessarie in byte.

pdwBufferLength

Tipo: _Inout_ PDWORD

Lunghezza del buffer fornito dal chiamante. Se pBuffer è NULL o troppo piccolo, WinHttpQueryHeadersEx scrive le dimensioni del buffer necessarie in byte in questo parametro.

ppHeaders

Tipo: _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*

Handle di una matrice di WINHTTP_EXTENDED_HEADER per l'accesso ai nomi o ai valori delle intestazioni analizzate. È necessario passare l'indirizzo di un puntatore WINHTTP_EXTENDED_HEADER inizializzato su NULL. Al termine, è necessario accedere ai parametri pszName/pszValue se si usano WINHTTP_QUERY_FLAG_WIRE_ENCODING e pwszName/pwszValue in caso contrario.

pdwHeadersCount

Tipo: _Out_ PDWORD

Numero di intestazioni restituite. Non è consigliabile provare ad accedere al di là ppHeaders[cHeaders - 1]di , perché è fuori dai limiti della matrice.

Valore restituito

Codice di stato che indica il risultato dell'operazione. Tra i codici di errore restituiti sono riportati di seguito.

Codice di errore Descrizione
ERROR_WINHTTP_HEADER_NOT_FOUND
Impossibile individuare l'intestazione richiesta.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Impossibile eseguire l'operazione richiesta perché l'handle fornito non è nello stato corretto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Il tipo di handle fornito non è corretto per questa operazione.
ERROR_WINHTTP_INTERNAL_ERROR
Si è verificato un errore interno.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente per completare l'operazione richiesta. (Codice errore di Windows)

Commenti

WinHttpQueryHeadersEx si basa sulla funzionalità di WinHttpQueryHeaders. WinHttpQueryHeaders consente di eseguire query su intestazioni di richiesta o risposta (o trailer di risposta) sotto forma di stringa, numero (DWORD) o timestamp (SYSTEMTIME). L'esecuzione di query per tutte le intestazioni restituisce una singola stringa serializzata con caratteri CRLF o NULL che delimitano intestazioni diverse. Ad esempio, "Name1: value1\r\nName2: value2\r\n\r\n". Oppure "Name1: value1\0Name2: value2\0\0". Viene usato un delimitatore doppio per indicare la fine della stringa.

WinHttpQueryHeadersEx consente di recuperare il nome e le stringhe valore dell'intestazione analizzate.

Requisiti

Requisito Valore
Client minimo supportato Windows 10 Build 20348
Server minimo supportato Windows 10 Build 20348
Piattaforma di destinazione Windows
Intestazione winhttp.h
Libreria Winhttp.lib
DLL Winhttp.dll