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 |
---|---|
|
Impossibile individuare l'intestazione richiesta. |
|
Impossibile eseguire l'operazione richiesta perché l'handle fornito non è nello stato corretto. |
|
Il tipo di handle fornito non è corretto per questa operazione. |
|
Si è verificato un errore interno. |
|
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 |