今天为了实现论坛自动登录发贴,作了如下尝试:
asp代码说明:
登录页面为:login.asp
要提交的表单两个:txt_user,txt_password
登录后提交的页面是:login_check.asp,该页面我的测试代码简单的只有以下:
username=trim(Request.Form("txt_user"))
response.write "username=" & username
password=trim(Request.Form("txt_password"))
response.write "password=" & password
--------------------------DELPHI代码如下(希望通过IDHTTP的POST方法实现自动登录)----------------------
procedure TForm1.Button2Click(Sender: TObject);
const
BaseURL = 'http://192.168.2.25/test/'; //论坛所在地址
UserName = 'sa'; //登录用户名
Password = '123'; //登录密码
var
Params: TStrings;
HTML: String;
MD5Pass: String;
ret:tstringstream;
begin
Params:=TStringList.Create;
ret:=TStringStream.Create('');
try
Params.Clear;
Params.add('txt_user='+UserName);
Params.Add('txt_password='+Password);
IDHttp.HandleRedirects := true;
IdHTTP.request.contenttype:='application/x-www-form-urlencoded';
IdHTTP.Request.Referer := BaseURL + 'login.asp';
IdHTTP.Post(BaseURL+'login_check.asp',Params,ret);
HTML:=ret.datastring;
Memo1.Lines.Text := HTML;
if Pos(BASEURL+cars.asp',HTML)=0 then //cars.asp是登录成功后会转向的页面
begin
ShowMessage('登录失败');
Exit;
end;
finally
Params.Free;
end;
end;
------------------
问题:按正常ASP应该是得到如下内容
username=sa
password=123
但实际遇到的问题是username=satxt_password=123
password=
不解!!!!!!为什么我传的是两个参数,但程序却把两个参数当作了一个参数是不是IDHTTP控件有BUG?
清醒一下,写篇博客再思考问题可能出在哪里。