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에서 반환된 요청 핸들입니다. WinHttpQueryHeadersEx를 호출하기 전에 이 핸들에 대한 WinHttpReceiveResponse 호출이 완료되어야 합니다. 예고편을 쿼리하는 경우 이 핸들에 대한 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_SYSTEMTIMEWINHTTP_QUERY_RAW_HEADERS_CRLF ERROR_INVALID_PARAMETER 반환합니다.

플래그 WINHTTP_QUERY_EX_ALL_HEADERS 모든 헤더를 반환합니다.

모든 헤더를 쿼리하지 않는 경우 알려진 특정 헤더에 해당하는 플래그를 전달하거나 pHeaderName 매개 변수의 헤더 이름에 대한 문자열과 함께 WINHTTP_QUERY_CUSTOM 전달할 수 있습니다.

WINHTTP_QUERY_FLAG_WIRE_ENCODING 전달하면 헤더가 유선으로 전송되는 형식으로 반환됩니다(WINHTTP_EXTENDED_HEADERWINHTTP_HEADER_NAMEpsz* 멤버에 액세스/설정해야 합니다). 와이어 인코딩 플래그를 설정하지 않으면 기본 동작은 유니코드 형식의 헤더를 반환하는 것입니다(WINHTTP_EXTENDED_HEADERWINHTTP_HEADER_NAMEpwsz* 멤버에 액세스/설정해야 함).

ullFlags

형식: _In_ ULONGLONG

예약되어 있습니다. 0으로 설정합니다.

uiCodePage

형식: _In_ UINT

유니코드 변환에 사용할 코드 페이지입니다. 기본 동작(CP_ACP) 또는 WINHTTP_QUERY_FLAG_WIRE_ENCODING 사용하는 경우 0을 전달해야 합니다. 이 매개 변수에 대한 유효성 검사는 수행되지 않습니다.

pdwIndex

형식: _Inout_opt_ PDWORD

이름이 같은 여러 헤더를 열거하는 데 사용되는 인덱스(0부터 시작)의 주소입니다. 함수를 호출할 때 이 매개 변수는 반환할 지정된 헤더의 인덱스입니다. 함수가 반환되면 이 매개 변수는 다음 헤더의 인덱스입니다. NULL을 전달하여 지정된 헤더의 첫 번째 instance 액세스합니다.

pHeaderName

형식: _Inout_opt_ PWINHTTP_HEADER_NAME

WINHTTP_HEADER_NAME 구조체의 주소입니다.

모든 헤더를 검색할 때 pHeaderNameNULL 로 설정합니다. 이 매개 변수가 NULL이 아니고 dwInfoLevel사용하여 WINHTTP_QUERY_CUSTOM 전달하는 경우 WinHttpQueryHeadersEx는 이 매개 변수에 지정된 헤더만 검색합니다. dwInfoLevel사용하여 WINHTTP_QUERY_FLAG_WIRE_ENCODING 전달하는 경우 pszName 멤버를 사용해야 합니다(플래그가 설정되지 않은 경우 pwszName 멤버 사용).

pBuffer

형식: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID

구문 분석된 헤더 포인터와 헤더를 저장할 호출자가 제공하는 버퍼입니다. 이 매개 변수가 NULL 이거나 너무 작으면 WinHttpQueryHeadersExERROR_INSUFFICIENT_BUFFER 반환하고 pdwBufferLength 매개 변수에는 필요한 버퍼 크기(바이트)가 포함됩니다.

pdwBufferLength

형식: _Inout_ PDWORD

호출자가 제공한 버퍼의 길이입니다. pBufferNULL이거나 너무 작은 경우 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]하여 액세스하려고 하면 안 됩니다.

반환 값

작업의 결과를 나타내는 상태 코드입니다. 반환된 오류 코드 중에는 다음과 같습니다.

오류 코드 Description
ERROR_WINHTTP_HEADER_NOT_FOUND
요청된 헤더를 찾을 수 없습니다.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
제공된 핸들이 올바른 상태가 아니므로 요청된 작업을 수행할 수 없습니다.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
이 작업에 대해 제공된 핸들의 형식이 올바르지 않습니다.
ERROR_WINHTTP_INTERNAL_ERROR
내부 오류가 발생했습니다.
ERROR_NOT_ENOUGH_MEMORY
메모리가 부족하여 요청된 작업을 완료할 수 없습니다. (Windows 오류 코드)

설명

WinHttpQueryHeadersExWinHttpQueryHeaders의 기능을 기반으로 합니다. WinHttpQueryHeaders 를 사용하면 문자열, 숫자(DWORD) 또는 타임스탬프(SYSTEMTIME) 형식으로 요청 또는 응답 헤더(또는 응답 트레일러)를 쿼리할 수 있습니다. 모든 헤더에 대해 쿼리하면 CRLF 또는 NULL 문자가 서로 다른 헤더를 구분하여 직렬화된 단일 문자열을 반환합니다. 예를 들어 "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
라이브러리 Winhttp.lib
DLL Winhttp.dll