比如打开一个页面,如何获取它返回的HttP头数据?比如得到以下的数据?:HTTP/1.1 404 Not Found
Content-Length: 1308
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sat, 26 Jan 2008 09:10:12 GMT

解决方案 »

  1.   

    没做过,你看一下 indy Http 行不行!
      

  2.   

    好象我昨天刚贴过代码,搜索一下.
    http://topic.csdn.net/u/20080127/21/393eddf4-fd42-4b77-b08e-6b05633f4cfa.html
    不好意思,忘了告诉你参数的意义了: 第一个是服务器: topic.csdn.net
    第二个是端口: 80
    第三个是文件名称: /u/20080126/17/daefa31e-0c22-4b47-8bd2-923c84722935.html
    这样调用就能获取到当前的这个页面的数据了: 
    GetURLContent('topic.csdn.net', 
                  80, 
                  '/u/20080126/17/daefa31e-0c22-4b47-8bd2-923c84722935.html');再给你两个函数用来分解完整的URL为需要的参数: 
    ParseURL(strURL, strFile); //这个分解一个完整的URL为需要的形式,第一个参数是完成的URL,
       比如: http://mp3.baidu.com/m?f=ms&rn=&tn=baidump3&ct=134217728&word=%CE%D2&lm=-1
       第二个参数是要接受文件名的变量.
       返回时, strURL就是mp3.baidu.com, 而strFile就是: /m?f=ms&rn=&tn=baidump3&ct=134217728&word=%CE%D2&lm=-1ConverseURL(strFile);      //这个把URL里面的空格转换成%20procedure TSearchThread.ParseURL(var strURL, strFile: string);
    var
      m_iPos: integer;
    begin
      strFile:= '';
      //strURL:= LowerCase(strURL);
      m_iPos:= Pos('http://', strURL);  if m_iPos >= 1 then
        strURL:= Copy(strURL, m_iPos + 7, Length(strURL) - 7);  m_iPos:= Pos('/', strURL);  if m_iPos >= 1 then
      begin
        strFile:= Copy(strURL, m_iPos+1, Length(strURL));
        strURL := Copy(strURL, 1, m_iPos - 1);
      end;  
    end;procedure TSearchThread.ConverseURL(var strFile: string);
    var
      intPos: integer;
      strTmp: string;
    begin
      strTmp:= '%20';  intPos := Pos(' ', strFile);
      while intPos > 0 do
      begin
        Delete(strFile, intPos, 1);
        Insert(strFile, strTmp, intPos);
        intPos := Pos(' ', strFile);
      end;
    end;
      

  3.   

    HTTP头与内容之间使用两个回车换行符(#13#10)隔开。可以使用
    HTTPHead := Copy(Context,1,Pos(#13#10#13#10,Context)-1);
    取得
      

  4.   

    顶楼上
    HTTPHead := Copy(Context,1,Pos(#13#10#13#10,Context)-1);