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