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