BOOL WINAPI HttpQueryInfo(
HINTERNET hRequest,
DWORD dwInfoLevel,
LPVOID lpBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex
);
參數(shù):
hRequest:HTTP請求返回的句柄。
dwInfoLevel:指定的屬性的組合查詢和請求進(jìn)行修改的標(biāo)志,下面的表顯示了可能的屬性值。
lpBuffer:指針指向的緩沖區(qū),接收的信息。
lpdwBufferLength:指針的值包含的數(shù)據(jù)緩沖區(qū)的長度。
lpdwIndex:長指針,用于列舉多個具有相同名稱的頭一個從零開始的頭索引,不需要可設(shè)置為NULL。
鏈接庫:Wininet.lib
下面是dwInfoLevel的取值:
值
描述
常量值
HTTP_QUERY_ACCEPT
檢索可以接受的媒體類型的響應(yīng)。
24
HTTP_QUERY_ACCEPT_CHARSET
檢索的響應(yīng)可接受的字符集。
25
HTTP_QUERY_ACCEPT_ENCODING
獲取可接受的內(nèi)容編碼值的響應(yīng)。
26
HTTP_QUERY_ACCEPT_LANGUAGE
可接受的自然語言檢索的響應(yīng)。
27
HTTP_QUERY_ACCEPT_RANGES
檢索范圍的請求被接受的資源的類型。
42
HTTP_QUERY_AGE
檢索Age的響應(yīng)頭域。
48
HTTP_QUERY_ALLOW
接收服務(wù)器所支持的方法。
7
HTTP_QUERY_AUTHORIZATION
獲取用于請求的授權(quán)證書。
28
HTTP_QUERY_CACHE_CONTROL
獲取高速緩存控制指令。
49
HTTP_QUERY_CONNECTION
獲取指定一個特定的連接。
23
HTTP_QUERY_COOKIE
檢索與請求相關(guān)聯(lián)的Cookie。
44
HTTP_QUERY_CONTENT_BASE
檢索在實(shí)體解析相對URL的基URI。
50
HTTP_QUERY_CONTENT_DESCRIPTION
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
HTTP_QUERY_CONTENT_DISPOSITION
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
HTTP_QUERY_CONTENT_ENCODING
接收已被施加到整個資源的任何額外的內(nèi)容編碼。
29
HTTP_QUERY_CONTENT_ID
接收內(nèi)容識別。
3
HTTP_QUERY_CONTENT_LANGUAGE
接收該內(nèi)容是英寸的語言
6
HTTP_QUERY_CONTENT_LENGTH
接收到的資源大小,以字節(jié)為單位。
5
HTTP_QUERY_CONTENT_LOCATION
檢索包含在消息的實(shí)體資源位置。
51
HTTP_QUERY_CONTENT_MD5
獲取MD5。
52
HTTP_QUERY_CONTENT_RANGE
獲取完整實(shí)體中應(yīng)該被插入部分的位置和實(shí)體的總大小。
53
HTTP_QUERY_CONTENT_TRANSFER_ENCODING
接收附加的編碼已被應(yīng)用到的資源的內(nèi)容。
2
HTTP_QUERY_CONTENT_TYPE
接收的內(nèi)容類型的資源(如text / HTML)。
1
HTTP_QUERY_COST
不再執(zhí)行。
15
HTTP_QUERY_DATE
接收的日期和時間,在該消息起源。
9
HTTP_QUERY_DERIVED_FROM
不再支持。
HTTP_QUERY_ETAG
檢索相關(guān)的實(shí)體的實(shí)體標(biāo)簽。
54
HTTP_QUERY_EXPIRES
接收的日期和時間后,資源應(yīng)該被認(rèn)為是過時的。
10
HTTP_QUERY_FORWARDED
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
30
HTTP_QUERY_HOST
檢索被請求的Internet主機(jī)和端口號。
55
HTTP_QUERY_IF_MATCH
檢索的If-Match請求標(biāo)頭字段的內(nèi)容。
56
HTTP_QUERY_IF_MODIFIED_SINCE
檢索的If-Modified-Since頭信息的內(nèi)容。
32
HTTP_QUERY_IF_NONE_MATCH
如果無匹配的請求標(biāo)頭字段的內(nèi)容檢索。
57
HTTP_QUERY_IF_UNMODIFIED_SINCE
檢索的內(nèi)容,如果未改性的自請求標(biāo)頭字段。
59
HTTP_QUERY_LINK
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
HTTP_QUERY_LAST_MODIFIED
接收服務(wù)器認(rèn)為資源為最后修改的日期和時間,在該時間。
11
HTTP_QUERY_LOCATION
獲取的絕對URI在Location應(yīng)答頭。
33
HTTP_QUERY_MAX
檢索一個HTTP_QUERY_ *值的最大值。
78
HTTP_QUERY_MAX_FORWARDS
檢索代理或網(wǎng)關(guān),可以將請求轉(zhuǎn)發(fā)到下一個入站服務(wù)器的數(shù)量。
60
HTTP_QUERY_MESSAGE_ID
不再執(zhí)行。
12
HTTP_QUERY_MIME_VERSION
接收被用來構(gòu)造消息的MIME協(xié)議的版本。
0
HTTP_QUERY_ORIG_URI
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
34
HTTP_QUERY_PRAGMA
接收特定于實(shí)現(xiàn)的指令可能適用于任何收件人沿著請求/響應(yīng)鏈。
17
HTTP_QUERY_PROXY_AUTHENTICATE
檢索代理返回的身份驗(yàn)證方案和領(lǐng)域。
41
HTTP_QUERY_PROXY_AUTHORIZATION
檢索是用來識別用戶要求身份驗(yàn)證的一個代理的標(biāo)頭。
61
HTTP_QUERY_PUBLIC
接收方法可在此服務(wù)器上。
8
HTTP_QUERY_RANGE
檢索的字節(jié)范圍的實(shí)體。
62
HTTP_QUERY_RAW_HEADERS_CRLF
接收所有由服務(wù)器返回的HEAD。
22
HTTP_QUERY_REFERER
接收得到所請求的URI的資源的URI。
35
HTTP_QUERY_REFRESH
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
HTTP_QUERY_REQUEST_METHOD
接收正在請求中使用的動詞,通常是GET或POST。
45
HTTP_QUERY_RETRY_AFTER
獲取預(yù)期服務(wù)不可用的時間量。
36
HTTP_QUERY_SERVER
檢索所使用的軟件的源服務(wù)器處理請求的信息。
37
HTTP_QUERY_SET_COOKIE
接收數(shù)值為請求設(shè)置的cookie。
43
HTTP_QUERY_STATUS_CODE
接收由服務(wù)器返回的狀態(tài)碼。
19
HTTP_QUERY_STATUS_TEXT
接收服務(wù)器返回的響應(yīng)行的任何額外的文本。
20
HTTP_QUERY_TITLE
已過時,保持傳統(tǒng)的應(yīng)用程序兼容性。
38
HTTP_QUERY_TRANSFER_ENCODING
獲取轉(zhuǎn)換類型,可以在正確的發(fā)送者和接收者之間傳送。
63
HTTP_QUERY_UPGRADE
獲取額外的服務(wù)器所支持的通信協(xié)議。
64
HTTP_QUERY_URI
接收部分可以識別的Request-URI資源的統(tǒng)一資源標(biāo)識符(URI)。
13
HTTP_QUERY_USER_AGENT
獲取發(fā)出請求的用戶代理的信息。
39
HTTP_QUERY_VARY
獲取header,指示該實(shí)體選自可用的響應(yīng),使用服務(wù)器驅(qū)動的協(xié)商。
65
HTTP_QUERY_VERSION
在收到最后由服務(wù)器返回的響應(yīng)代碼。
18
HTTP_QUERY_WARNING
獲取更多的信息,可能不能反映響應(yīng)狀態(tài)碼的響應(yīng)的狀態(tài)。
67
HTTP_QUERY_WWW_AUTHENTICATE
檢索由服務(wù)器返回的身份驗(yàn)證方案和領(lǐng)域。
40
例子:
[delphi]
view plain copyprocedure 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;
//查詢響應(yīng)頭信息
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;
http://blog.csdn.net/hutao1101175783/article/details/42589783