0

我正在使用 Indy 中的 IdHttp 模块制作一些简单的 Delphi 软件。我想通过使用 IdHttp 的 post 功能打开这个网页来访问这个页面。

首先我必须登录,(在http://user.buddybuddy.co.kr/Login/Login.asp),所以我登录了,但在我登录网页后,我可以看到另一个登录页面。但是当我尝试登录时(在http://user.buddybuddy.co.kr/usercheck/UserCheckPWExec.asp),我遇到了一条错误消息,“非法访问”。

如果有人可以帮助我,我将不胜感激!

        begin
      sl.Clear;
      sl.Add('ID=ph896011');
      sl.add('PWD=pk1089');
      sl.add('SECCHK=0');
      IdHTTP1.HandleRedirects := True;
      IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
      memo1.Text:=idhttp1.Post('http://user.buddybuddy.co.kr/Login/Login.asp',sl);

      if pos('top.location =',Memo1.Text)> 0 then

       begin
        application.ProcessMessages;
        sleep(1000);
        Memo1.Text:= '';
        sleep(300);
        sl2.Clear;
        sl2.Add('PASSWD=pk1089' );
        Memo2.Text := IdHTTP1.Post('http://user.buddybuddy.co.kr/usercheck/UserCheckPWExec.asp', sl2);


        sleep(300);
        Memo1.Text := '';
        //memo1.Text := IdHTTP1.Get('https://user.buddybuddy.co.kr/Login/Logout.asp');
        //Sleep(1000);
       end;
4

1 回答 1

1

服务器几乎可以肯定地通过返回一个带有来自对 Login.asp 请求的响应的cookie来跟踪您是否已登录。您需要将该 cookie 与任何后续请求一起发回。要跟踪 cookie,请创建一个TIdCookieManager对象并将其分配给 HTTP 对象的CookieManager属性。第一个请求将在其中存储响应的 cookie,并且对同一 HTTP 对象的下一个请求会将它们发回,向服务器表明您已经登录。

于 2010-05-21T00:34:01.500 回答