WinHttpQueryHeadersEx 関数 (winhttp.h)
HTTP 要求に関連付けられているヘッダー情報を取得します。は、解析されたヘッダー名と値の文字列を取得する方法を提供します。
構文
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
);
パラメーター
hRequest
型: _In_ HINTERNET
WinHttpOpenRequest によって返される要求ハンドル。 このハンドルの WinHttpReceiveResponse 呼び出しは、 WinHttpQueryHeadersEx を呼び出す前に完了している必要があります。 トレーラーに対してクエリを実行する場合、このハンドルの WinHttpReadData 呼び出しは、 WinHttpQueryHeadersEx を呼び出す前に読み取られた 0 バイトを返す必要があります。
dwInfoLevel
型: _In_ DWORD
「クエリ情報フラグ」トピックに記載されている属性フラグと修飾子フラグの組み合わせを指定する DWORD 型の値。 これらの属性フラグと修飾子フラグは、要求されている情報と、その書式設定方法を示します。
注意
次のフラグを使用すると、WINHTTP_QUERY_VERSION、WINHTTP_QUERY_STATUS_CODE、WINHTTP_QUERY_STATUS_TEXT、WINHTTP_QUERY_FLAG_NUMBER、WINHTTP_QUERY_FLAG_NUMBER64、WINHTTP_QUERY_FLAG_SYSTEMTIME、WINHTTP_QUERY_RAW_HEADERS_CRLFのERROR_INVALID_PARAMETERが返されます。
フラグ WINHTTP_QUERY_EX_ALL_HEADERS は、すべてのヘッダーを返します。
すべてのヘッダーに対してクエリを実行していない場合は、特定の既知のヘッダーに対応するフラグを渡すか、pHeaderName パラメーターのヘッダー名の文字列と共にWINHTTP_QUERY_CUSTOMを渡すことができます。
WINHTTP_QUERY_FLAG_WIRE_ENCODING渡すと、ヘッダーがネットワーク経由で送信される形式で返されます (WINHTTP_EXTENDED_HEADER および WINHTTP_HEADER_NAME の psz* メンバーにアクセス/設定する必要があります)。 ワイヤ エンコード フラグを設定しない場合、既定の動作では Unicode 形式のヘッダーが返されます (WINHTTP_EXTENDED_HEADER および WINHTTP_HEADER_NAME の pwsz* メンバーにアクセス/設定する必要があります)。
ullFlags
型: _In_ ULONGLONG
予約済み。 0 に設定されます。
uiCodePage
型: _In_ UINT
Unicode 変換に使用するコード ページ。 既定の動作 (CP_ACP)、または WINHTTP_QUERY_FLAG_WIRE_ENCODING を使用する場合は 0 を渡す必要があります。 このパラメーターの検証は行われません。
pdwIndex
同じ名前の複数のヘッダーを列挙するために使用される 0 から始まるインデックスのアドレス。 関数を呼び出すとき、このパラメーターは、返される指定されたヘッダーのインデックスです。 関数が戻るときに、このパラメーターは次のヘッダーのインデックスです。 NULL を渡して、指定されたヘッダーの最初のインスタンスにアクセスします。
pHeaderName
種類: _Inout_opt_ PWINHTTP_HEADER_NAME
WINHTTP_HEADER_NAME構造体のアドレス。
すべてのヘッダーを取得するときに 、pHeaderName を NULL に 設定します。 このパラメーターが NULL ではなく、dwInfoLevelでWINHTTP_QUERY_CUSTOMを渡すと、WinHttpQueryHeadersEx はこのパラメーターで指定されたヘッダーのみを取得します。 dwInfoLevelでWINHTTP_QUERY_FLAG_WIRE_ENCODINGを渡す場合は、pszName メンバーを使用する必要があります (フラグが設定されていない場合は、pwszName メンバーを使用します)。
pBuffer
型: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID
解析されたヘッダー ポインターとヘッダーを格納するための呼び出し元から提供されたバッファー。 このパラメーターが NULL または小さすぎる場合、 WinHttpQueryHeadersEx は ERROR_INSUFFICIENT_BUFFERを返し、 pdwBufferLength パラメーターには必要なバッファー サイズ (バイト単位) が含まれます。
pdwBufferLength
型: _Inout_ PDWORD
呼び出し元が指定したバッファーの長さ。 pBuffer が NULL または小さすぎる場合、WinHttpQueryHeadersEx は必要なバッファー サイズをバイト単位でこのパラメーターに書き込みます。
ppHeaders
型: _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*
解析されたヘッダー名/値にアクセスするための WINHTTP_EXTENDED_HEADER の配列へのハンドル。 NULL に初期化されたWINHTTP_EXTENDED_HEADER ポインターのアドレスを渡す必要があります。 完了したら、WINHTTP_QUERY_FLAG_WIRE_ENCODINGを使用する場合は pszName/pszValue パラメーターにアクセスし、それ以外の場合は pwszName/pwszValue にアクセスする必要があります。
pdwHeadersCount
型: _Out_ PDWORD
返されるヘッダーの数。 が配列の範囲外であるため、 を超えて ppHeaders[cHeaders - 1]
アクセスしようとしないでください。
戻り値
操作の結果を示す状態コード。 返されるエラー コードは次のとおりです。
エラー コード | 説明 |
---|---|
|
要求されたヘッダーが見つかりませんでした。 |
|
指定されたハンドルが正しい状態でないため、要求された操作を実行できません。 |
|
指定されたハンドルの種類が、この操作に対して正しくありません。 |
|
内部エラーが発生しました。 |
|
要求された操作を完了するのに十分なメモリが使用できませんでした。 (Windows エラー コード) |
注釈
WinHttpQueryHeadersEx は 、 WinHttpQueryHeaders の機能に基づいて構築されています。 WinHttpQueryHeaders を使用すると、文字列、数値 (DWORD)、またはタイムスタンプ (SYSTEMTIME) の形式で要求ヘッダーまたは応答ヘッダー (または応答トレーラー) を照会できます。 すべてのヘッダーに対してクエリを実行すると、異なるヘッダーを区切る CRLF または NULL 文字を含む 1 つのシリアル化された文字列が返されます。 たとえば、"Name1: value1\r\nName2: value2\r\n\r\n" などです。 または、"Name1: value1\0Name2: value2\0\0" です。 文字列の末尾を示すために、二重区切り記号が使用されます。
WinHttpQueryHeadersEx を使用すると、解析されたヘッダー名と値の文字列を取得できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
対象プラットフォーム | Windows |
ヘッダー | winhttp.h |
Library | Winhttp.lib |
[DLL] | Winhttp.dll |