BOOL WINAPI HttpQueryInfo(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex
);
参数:
hRequest:HTTP请求返回的句柄。
dwInfoLevel:指定的属性的组合查询和请求进行修改的标志,下面的表显示了可能的属性值。
lpBuffer:指针指向的缓冲区,接收的信息。
lpdwBufferLength:指针的值包含的数据缓冲区的长度。
lpdwIndex:长指针,用于列举多个具有相同名称的头一个从零开始的头索引,不需要可设置为NULL。
链接库:Wininet.lib
下面是dwInfoLevel的取值:
值 |
描述 |
常量值 |
---|---|---|
HTTP_QUERY_ACCEPT |
检索可以接受的媒体类型的响应。 |
24 |
HTTP_QUERY_ACCEPT_CHARSET |
检索的响应可接受的字符集。 |
25 |
HTTP_QUERY_ACCEPT_ENCODING |
获取可接受的内容编码值的响应。 |
26 |
HTTP_QUERY_ACCEPT_LANGUAGE |
可接受的自然语言检索的响应。 |
27 |
HTTP_QUERY_ACCEPT_RANGES |
检索范围的请求被接受的资源的类型。 |
42 |
HTTP_QUERY_AGE |
检索Age的响应头域。 |
48 |
HTTP_QUERY_ALLOW |
接收服务器所支持的方法。 |
7 |
HTTP_QUERY_AUTHORIZATION |
获取用于请求的授权证书。 |
28 |
HTTP_QUERY_CACHE_CONTROL |
获取高速缓存控制指令。 |
49 |
HTTP_QUERY_CONNECTION |
获取指定一个特定的连接。 |
23 |
HTTP_QUERY_COOKIE |
检索与请求相关联的Cookie。 |
44 |
HTTP_QUERY_CONTENT_BASE |
检索在实体解析相对URL的基URI。 |
50 |
HTTP_QUERY_CONTENT_DESCRIPTION |
已过时,保持传统的应用程序兼容性。 |
|
HTTP_QUERY_CONTENT_DISPOSITION |
已过时,保持传统的应用程序兼容性。 |
|
HTTP_QUERY_CONTENT_ENCODING |
接收已被施加到整个资源的任何额外的内容编码。 |
29 |
HTTP_QUERY_CONTENT_ID |
接收内容识别。 |
3 |
HTTP_QUERY_CONTENT_LANGUAGE |
接收该内容是英寸的语言 |
6 |
HTTP_QUERY_CONTENT_LENGTH |
接收到的资源大小,以字节为单位。 |
5 |
HTTP_QUERY_CONTENT_LOCATION |
检索包含在消息的实体资源位置。 |
51 |
HTTP_QUERY_CONTENT_MD5 |
获取MD5。 |
52 |
HTTP_QUERY_CONTENT_RANGE |
获取完整实体中应该被插入部分的位置和实体的总大小。 |
53 |
HTTP_QUERY_CONTENT_TRANSFER_ENCODING |
接收附加的编码已被应用到的资源的内容。 |
2 |
HTTP_QUERY_CONTENT_TYPE |
接收的内容类型的资源(如text / HTML)。 |
1 |
HTTP_QUERY_COST |
不再执行。 |
15 |
HTTP_QUERY_DATE |
接收的日期和时间,在该消息起源。 |
9 |
HTTP_QUERY_DERIVED_FROM |
不再支持。 |
|
HTTP_QUERY_ETAG |
检索相关的实体的实体标签。 |
54 |
HTTP_QUERY_EXPIRES |
接收的日期和时间后,资源应该被认为是过时的。 |
10 |
HTTP_QUERY_FORWARDED |
已过时,保持传统的应用程序兼容性。 |
30 |
HTTP_QUERY_HOST |
检索被请求的Internet主机和端口号。 |
55 |
HTTP_QUERY_IF_MATCH |
检索的If-Match请求标头字段的内容。 |
56 |
HTTP_QUERY_IF_MODIFIED_SINCE |
检索的If-Modified-Since头信息的内容。 |
32 |
HTTP_QUERY_IF_NONE_MATCH |
如果无匹配的请求标头字段的内容检索。 |
57 |
HTTP_QUERY_IF_UNMODIFIED_SINCE |
检索的内容,如果未改性的自请求标头字段。 |
59 |
HTTP_QUERY_LINK |
已过时,保持传统的应用程序兼容性。 |
|
HTTP_QUERY_LAST_MODIFIED |
接收服务器认为资源为最后修改的日期和时间,在该时间。 |
11 |
HTTP_QUERY_LOCATION |
获取的绝对URI在Location应答头。 |
33 |
HTTP_QUERY_MAX |
检索一个HTTP_QUERY_ *值的最大值。 |
78 |
HTTP_QUERY_MAX_FORWARDS |
检索代理或网关,可以将请求转发到下一个入站服务器的数量。 |
60 |
HTTP_QUERY_MESSAGE_ID |
不再执行。 |
12 |
HTTP_QUERY_MIME_VERSION |
接收被用来构造消息的MIME协议的版本。 |
0 |
HTTP_QUERY_ORIG_URI |
已过时,保持传统的应用程序兼容性。 |
34 |
HTTP_QUERY_PRAGMA |
接收特定于实现的指令可能适用于任何收件人沿着请求/响应链。 |
17 |
HTTP_QUERY_PROXY_AUTHENTICATE |
检索代理返回的身份验证方案和领域。 |
41 |
HTTP_QUERY_PROXY_AUTHORIZATION |
检索是用来识别用户要求身份验证的一个代理的标头。 |
61 |
HTTP_QUERY_PUBLIC |
接收方法可在此服务器上。 |
8 |
HTTP_QUERY_RANGE |
检索的字节范围的实体。 |
62 |
HTTP_QUERY_RAW_HEADERS_CRLF |
接收所有由服务器返回的HEAD。 |
22 |
HTTP_QUERY_REFERER |
接收得到所请求的URI的资源的URI。 |
35 |
HTTP_QUERY_REFRESH |
已过时,保持传统的应用程序兼容性。 |
|
HTTP_QUERY_REQUEST_METHOD |
接收正在请求中使用的动词,通常是GET或POST。 |
45 |
HTTP_QUERY_RETRY_AFTER |
获取预期服务不可用的时间量。 |
36 |
HTTP_QUERY_SERVER |
检索所使用的软件的源服务器处理请求的信息。 |
37 |
HTTP_QUERY_SET_COOKIE |
接收数值为请求设置的cookie。 |
43 |
HTTP_QUERY_STATUS_CODE |
接收由服务器返回的状态码。 |
19 |
HTTP_QUERY_STATUS_TEXT |
接收服务器返回的响应行的任何额外的文本。 |
20 |
HTTP_QUERY_TITLE |
已过时,保持传统的应用程序兼容性。 |
38 |
HTTP_QUERY_TRANSFER_ENCODING |
获取转换类型,可以在正确的发送者和接收者之间传送。 |
63 |
HTTP_QUERY_UPGRADE |
获取额外的服务器所支持的通信协议。 |
64 |
HTTP_QUERY_URI |
接收部分可以识别的Request-URI资源的统一资源标识符(URI)。 |
13 |
HTTP_QUERY_USER_AGENT |
获取发出请求的用户代理的信息。 |
39 |
HTTP_QUERY_VARY |
获取header,指示该实体选自可用的响应,使用服务器驱动的协商。 |
65 |
HTTP_QUERY_VERSION |
在收到最后由服务器返回的响应代码。 |
18 |
HTTP_QUERY_WARNING |
获取更多的信息,可能不能反映响应状态码的响应的状态。 |
67 |
HTTP_QUERY_WWW_AUTHENTICATE |
检索由服务器返回的身份验证方案和领域。 |
40 |
例子:
procedure Get(const url: string; head, res: TStream); var hInt, hUrl: HINTERNET; buffer: PChar; dwRead: cardinal; flag: Boolean; len, index: Cardinal; begin GetMem(buffer, 65536); hInt := InternetOpen('Delphi', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); hurl := InternetOpenUrl(hInt, PChar(url), nil, 0, INTERNET_FLAG_RELOAD, 0); len := 65536; index := 0; //查询响应头信息 flag := HttpQueryInfo(hUrl, HTTP_QUERY_RAW_HEADERS_CRLF, buffer, len, index); if flag then begin head.Write(buffer^, len); repeat if not InternetReadFile(hUrl, buffer, 1000, dwRead) then Break; if dwRead <> 0 then res.Write(buffer^, dwRead); until dwRead = 0; end; InternetCloseHandle(hUrl); InternetCloseHandle(hInt); FreeMem(buffer); end;
时间: 2024-08-10 15:12:13