HttpQueryInfo function

Retrieves header information associated with an HTTP request.


BOOL HttpQueryInfo(
  _In_    HINTERNET hRequest,
  _In_    DWORD     dwInfoLevel,
  _Inout_ LPVOID    lpvBuffer,
  _Inout_ LPDWORD   lpdwBufferLength,
  _Inout_ LPDWORD   lpdwIndex


hRequest [in]

A handle returned by a call to the HttpOpenRequest or InternetOpenUrl function.

dwInfoLevel [in]

A combination of an attribute to be retrieved and flags that modify the request. For a list of possible attribute and modifier values, see Query Info Flags.

lpvBuffer [in, out]

A pointer to a buffer to receive the requested information. This parameter must not be NULL.

lpdwBufferLength [in, out]

A pointer to a variable that contains, on entry, the size in bytes of the buffer pointed to by lpvBuffer.

When the function returns successfully, this variable contains the number of bytes of information written to the buffer. In the case of a string, the byte count does not include the string's terminating null character.

When the function fails with an extended error code of ERROR_INSUFFICIENT_BUFFER, the variable pointed to by lpdwBufferLength contains on exit the size, in bytes, of a buffer large enough to receive the requested information. The calling application can then allocate a buffer of this size or larger, and call the function again.

lpdwIndex [in, out]

A pointer to a zero-based header index used to enumerate multiple headers with the same name. When calling the function, this parameter is the index of the specified header to return. When the function returns, this parameter is the index of the next header. If the next index cannot be found, ERROR_HTTP_HEADER_NOT_FOUND is returned.

Return value

Returns TRUE if successful, or FALSE otherwise. To get extended error information, call GetLastError.


You can retrieve the following types of data from HttpQueryInfo:

  • Strings (default)
  • SYSTEMTIME (for dates)
  • DWORD (for STATUS_CODE, CONTENT_LENGTH, and so on, if HTTP_QUERY_FLAG_NUMBER has been used)

If your application requires that the data be returned as a data type other than a string, you must include the appropriate modifier with the attribute passed to dwInfoLevel.

The HttpQueryInfo function is available in Microsoft Internet Explorer 3.0 for ISO-8859-1 characters (HttpQueryInfoA function) and in Internet Explorer 4.0 or later for ISO-8859-1 characters (HttpQueryInfoA function) and for ISO-8859-1 characters converted to UTF-16LE characters.(the HttpQueryInfoW function).

Note  The HttpQueryInfoA function represents headers as ISO-8859-1 characters not ANSI characters. The HttpQueryInfoW function represents headers as ISO-8859-1 characters converted to UTF-16LE characters. As a result, it is never safe to use the HttpQueryInfoW function when the headers can contain non-ASCII characters. Instead, an application can use the MultiByteToWideChar and WideCharToMultiByte functions with a Codepage parameter set to 28591 to map between ANSI characters and UTF-16LE characters.

See Retrieving HTTP Headers for an example code calling the HttpQueryInfo function.

Like all other aspects of the WinINet API, this function cannot be safely called from within DllMain or the constructors and destructors of global objects.

Note  WinINet does not support server implementations. In addition, it should not be used from a service. For server implementations or services use Microsoft Windows HTTP Services (WinHTTP).


Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]







Unicode and ANSI names

HttpQueryInfoW (Unicode) and HttpQueryInfoA (ANSI)

See also

HTTP Sessions
WinINet Functions
Retrieving HTTP Headers