描述
WinHttpQueryHeaders函数检索与HTTP请求相关联的头信息。
C / C ++语法
BOOL WinHttpQueryHeaders( HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex ); |
PowerBASIC 语法
FUNCTION WinHttpQueryHeaders ( _ BYVAL hRequest AS DWORD, _ BYVAL dwInfoLevel AS DWORD, _ BYREF pwszName AS WSTRINGZ, _ BYVAL lpBuffer AS DWORD, _ BYREF lpdwBufferLength AS DWORD, _ BYREF lpdwIndex AS DWORD _ ) AS LONG |
参数
hRequest
[in]HINTERNET请求句柄返回WinHttpOpenRequest.必须已调用WinHttpReceiveResponse此句柄,并在调用WinHttpQueryHeaders之前完成。
dwInfoLevel
[in]类型DWORD的值,它指定查询信息标志页面上列出的属性和修饰符标志的组合。这些属性和修饰符标志指示正在请求信息以及如何格式化。
pwszName
[in, optional]指向包含头名称的以null结尾的Unicode字符串的指针。如果dwInfoLevel中的标志不是WINHTTP_QUERY_CUSTOM,请将此参数设置为WINHTTP_HEADER_NAME_BY_INDEX。
lpBuffer
[out]指向接收信息的缓冲区的指针。将此参数设置为WINHTTP_NO_OUTPUT_BUFFER会导致此函数返回FALSE。调用GetLastError然后返回ERROR_INSUFFICIENT_BUFFER,lpdwBufferLength包含保存所请求信息所需的字节数。
lpdwBufferLength
[in, out]指向类型为DWORD的值,指定数据缓冲区的长度(以字节为单位)。当函数返回时,此参数包含指向写入缓冲区的信息长度的值的指针。当函数返回字符串时,应用以下规则。
· | 如果函数成功,lpdwBufferLength将指定字符串的长度,以字节为单位,为终止空值指定为减号2。 |
· | 如果函数失败,并返回ERROR_INSUFFICIENT_BUFFER,lpdwBufferLength指定应用程序必须分配以接收字符串的字节数。 |
lpdwIndex
[in, out]指向基于零的标题索引的指针,用于枚举具有相同名称的多个标头。调用该函数时,此参数是要返回的指定标题的索引。当函数返回时,该参数是下一个标题的索引。如果找不到下一个索引,则返回ERROR_WINHTTP_HEADER_NOT_FOUND。将此参数设置为WINHTTP_NO_HEADER_INDEX以指定只应返回首个头文件。
返回值
如果成功返回TRUE,否则返回FALSE。要获取扩展错误信息,请调用GetLastError.返回的错误代码有:
错误代码 |
描述 |
ERROR_WINHTTP_HEADER_NOT_FOUND |
找不到请求的头文件。 |
ERROR_WINHTTP_INCORRECT_HANDLE_STATE |
所请求的操作不能完成,因为提供的句柄不在正确的状态。 |
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE |
提供的手柄类型对于此操作是不正确的。 |
ERROR_WINHTTP_INTERNAL_ERROR |
发生内部错误。 |
ERROR_NOT_ENOUGH_MEMORY |
没有足够的内存来完成请求的操作。(Windows错误代码) |
备注
即使在异步模式下使用WinHTTP(也就是说,当WinHttpOpen中设置了WINHTTP_FLAG_ASYNC)时,此函数将同步运行。返回值表示成功或失败。要获取扩展错误信息,请调用GetLastError.
默认情况下WinHttpQueryHeaders返回一个字符串。但是,您可以通过在dwInfoLevel中包含适当的修饰符标志来请求SYSTEMTIME结构或DWORD形式的数据。下表显示了WinHttpQueryHeaders可以与您用于选择该数据类型的修饰符标志一起返回的可能数据类型。
数据类型 |
修饰符标志 |
LPCWSTR |
默认。不需要修饰符标志。 |
SYSTEMTIME |
WINHTTP_QUERY_FLAG_SYSTEMTIME |
DWORD |
WINHTTP_QUERY_FLAG_NUMBER |