`
SwiftHorse
  • 浏览: 209468 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

使用控件IdHttp遇到的奇怪现象

阅读更多

今天为了实现论坛自动登录发贴,作了如下尝试:

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?
清醒一下,写篇博客再思考问题可能出在哪里。

 

分享到:
评论
3 楼 haojielyb 2007-12-24  
我跟你的方法一样 为什么 我的值 就是 传不过去啊
2 楼 longaiqun001 2007-07-12  
1 楼 SwiftHorse 2007-07-10  
  休息了几分钟,总是得以解决,看来还是要注意调整。
  
    问题出在DELPHI代码:
  这是原来代码的:
  Params.add('txt_user='+UserName);
  Params.Add('txt_password='+Password);
  修改为以下代码(仅在第二个参数加了一个&):
  Params.add('txt_user='+UserName);
  Params.Add('&txt_password='+Password);

相关推荐

Global site tag (gtag.js) - Google Analytics