WinHttpQueryHeadersEx-Funktion (winhttp.h)
Ruft Headerinformationen ab, die einer HTTP-Anforderung zugeordnet sind; bietet eine Möglichkeit, analysierte Headernamen- und Wertzeichenfolgen abzurufen.
Syntax
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
);
Parameter
hRequest
Typ: _In_ HINTERNET
Von WinHttpOpenRequest zurückgegebenes Anforderungshandle. Der WinHttpReceiveResponse-Aufruf für dieses Handle muss vor dem Aufrufen von WinHttpQueryHeadersEx abgeschlossen sein. Wenn Sie Trailer abfragen, muss der WinHttpReadData-Aufruf für dieses Handle 0 Bytes lesen, bevor WinHttpQueryHeadersEx aufgerufen wird.
dwInfoLevel
Typ: _In_ DWORD
Wert vom Typ DWORD , der eine Kombination aus Attribut- und Modifiziererflags angibt, die im Thema Abfrageinfoflags aufgeführt sind. Diese Attribut- und Modifiziererflags geben die angeforderten Informationen an und geben an, wie sie formatiert werden sollen.
Hinweis
Die folgenden Flags geben bei Verwendung ERROR_INVALID_PARAMETER zurück: WINHTTP_QUERY_VERSION, WINHTTP_QUERY_STATUS_CODE, WINHTTP_QUERY_STATUS_TEXT, WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_QUERY_FLAG_NUMBER64, WINHTTP_QUERY_FLAG_SYSTEMTIME und WINHTTP_QUERY_RAW_HEADERS_CRLF.
Das Flag WINHTTP_QUERY_EX_ALL_HEADERS gibt alle Header zurück.
Wenn Sie nicht alle Header abfragen, können Sie das Flag übergeben, das einem bestimmten bekannten Header entspricht, oder Sie können WINHTTP_QUERY_CUSTOM zusammen mit einer Zeichenfolge für den Headernamen im pHeaderName-Parameter übergeben.
Das Übergeben von WINHTTP_QUERY_FLAG_WIRE_ENCODING gibt die Header in dem Format zurück, in dem sie über das Kabel gesendet werden (Sie sollten auf die psz* -Member von WINHTTP_EXTENDED_HEADER und WINHTTP_HEADER_NAME zugreifen bzw. festlegen). Wenn Sie das Kabelcodierungsflag nicht festlegen, besteht das Standardverhalten darin, Header im Unicode-Format zurückzugeben (Sie sollten auf die pwsz* -Member von WINHTTP_EXTENDED_HEADER und WINHTTP_HEADER_NAME zugreifen bzw. diese festlegen).
ullFlags
Typ: _In_ ULONGLONG
Reserviert. Auf 0 festlegen.
uiCodePage
Typ: _In_ UINT
Die Codepage, die für die Unicode-Konvertierung verwendet werden soll. Sie sollten 0 für das Standardverhalten (CP_ACP) oder bei Verwendung von WINHTTP_QUERY_FLAG_WIRE_ENCODING übergeben. Für diesen Parameter wird keine Überprüfung durchgeführt.
pdwIndex
Typ: _Inout_opt_ PDWORD
Die Adresse eines nullbasierten Indexes, der zum Auflisten mehrerer Header mit demselben Namen verwendet wird. Beim Aufrufen der Funktion ist dieser Parameter der Index des angegebenen Headers, der zurückgegeben werden soll. Wenn die Funktion zurückgibt, ist dieser Parameter der Index des nächsten Headers. Übergeben Sie NULL, um auf den ersten instance eines angegebenen Headers zuzugreifen.
pHeaderName
Typ: _Inout_opt_ PWINHTTP_HEADER_NAME
Die Adresse einer WINHTTP_HEADER_NAME-Struktur .
Legen Sie pHeaderName beim Abrufen aller Header auf NULL fest. Wenn dieser Parameter nicht NULL ist und Sie WINHTTP_QUERY_CUSTOM mit dwInfoLevel übergeben, ruft WinHttpQueryHeadersEx nur den von diesem Parameter angegebenen Header ab. Wenn Sie WINHTTP_QUERY_FLAG_WIRE_ENCODING mit dwInfoLevel übergeben, sollten Sie das element pszName verwenden (wenn das Flag nicht festgelegt ist, verwenden Sie das Element pwszName ).
pBuffer
Typ: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID
Ein vom Aufrufer bereitgestellter Puffer zum Speichern der analysierten Headerzeiger und der Header. Wenn dieser Parameter NULL oder zu klein ist, gibt WinHttpQueryHeadersExERROR_INSUFFICIENT_BUFFER zurück, und der Parameter pdwBufferLength enthält die erforderliche Puffergröße in Bytes.
pdwBufferLength
Typ: _Inout_ PDWORD
Länge des vom Aufrufer bereitgestellten Puffers. Wenn pBufferNULL oder zu klein ist, schreibt WinHttpQueryHeadersEx die erforderliche Puffergröße in Bytes in diesen Parameter.
ppHeaders
Typ: _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*
Ein Handle für ein Array von WINHTTP_EXTENDED_HEADER für den Zugriff auf analysierte Headernamen/-werte. Sie sollten die Adresse eines WINHTTP_EXTENDED_HEADER-Zeigers übergeben, der in NULL initialisiert ist. Nach Abschluss sollten Sie auf die pszName/pszValue-Parameter zugreifen, wenn Sie WINHTTP_QUERY_FLAG_WIRE_ENCODING verwenden, andernfalls pwszName/pwszValue .
pdwHeadersCount
Typ: _Out_ PDWORD
Die Anzahl der zurückgegebenen Header. Sie sollten nicht versuchen, darauf zuzugreifen, ppHeaders[cHeaders - 1]
da dies außerhalb der Grenzen des Arrays liegt.
Rückgabewert
Ein status Code, der das Ergebnis des Vorgangs angibt. Zu den zurückgegebenen Fehlercodes gehören die folgenden.
Fehlercode | BESCHREIBUNG |
---|---|
|
Der angeforderte Header konnte nicht gefunden werden. |
|
Der angeforderte Vorgang kann nicht ausgeführt werden, da sich der angegebene Handle nicht im richtigen Zustand befindet. |
|
Der Typ des angegebenen Handles ist für diesen Vorgang falsch. |
|
Ein interner Fehler ist aufgetreten. |
|
Für den angeforderten Vorgang war nicht genügend Arbeitsspeicher verfügbar. (Windows-Fehlercode) |
Hinweise
WinHttpQueryHeadersEx baut auf der Funktionalität von WinHttpQueryHeaders auf. Mit WinHttpQueryHeaders können Sie Anforderungs- oder Antwortheader (oder Antworttrailer) in Form einer Zeichenfolge, einer Zahl (DWORD) oder eines Zeitstempels (SYSTEMTIME) abfragen. Das Abfragen nach allen Headern gibt eine einzelne serialisierte Zeichenfolge mit CRLF- oder NULL-Zeichen zurück, die verschiedene Header trennen. Beispiel: "Name1: value1\r\nName2: value2\r\n\r\n". Oder "Name1: value1\0Name2: value2\0\0". Ein doppeltes Trennzeichen wird verwendet, um das Ende der Zeichenfolge anzugeben.
WinHttpQueryHeadersEx bietet Ihnen die Möglichkeit, analysierte Headernamen und Wertzeichenfolgen abzurufen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
Zielplattform | Windows |
Kopfzeile | winhttp.h |
Bibliothek | Winhttp.lib |
DLL | Winhttp.dll |