使用wininet的函数HttpQueryInfo来获取HTTP头信息
HttpQueryInfo定义如下:
function HttpQueryInfo(hRequest: HINTERNET; dwInfoLevel: DWORD;
  lpvBuffer: Pointer; var lpdwBufferLength: DWORD;
  var lpdwReserved: DWORD): BOOL; stdcall;
时,只有HTTP_QUERY_CONTENT_TYPE 、HTTP_QUERY_DATE、HTTP_QUERY_STATUS_CODE、HTTP_QUERY_RAW_HEADERS_CRLF和其他少数几个参数能使用。且使用用于获取全部HTTP头信息的HTTP_QUERY_RAW_HEADERS_CRLF时,获取的头信息不完整。使用用于获取头信息中的COOKIES的HTTP_QUERY_SET_COOKIE,也经常执行失败或获取不完整。求解。应用代码如下
var
  url:string;
  Session, HttpFile:HINTERNET;
  szSizeBuffer:Pointer;
  dwLengthSizeBuffer:DWord;
  dwReserved:DWord;
  dwFileSize:DWord;
  dwBytesRead:DWord; 
 
  success:longbool;
  
begin
 url:=trim(memo1.Lines.Text);  Session:=InternetOpen('',0,niL,niL,0);
  HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
    dwLengthSizeBuffer:=1024*1024;
    GetMem(szSizeBuffer,dwLengthSizeBuffer);
    level:=HTTP_QUERY_SET_COOKIE; //取COOKIES
    success:=HttpQueryInfo(HttpFile,level,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
    memo2.Lines.Append('执行状态:'+booltostr(success));
    memo3.Lines.Append('头信息:'+pchar(szSizeBuffer));
    FreeMem(szSizeBuffer);  InternetCloseHandle(HttpFile);
  InternetCloseHandle(Session);