2010-05-20 7 views
0

im nouveau à delphi. et aussi presque nouveau dans le monde de la programmation.delphi idhttp post question connexe

J'ai été fait un logiciel de publication simple qui utilise le module idhttp.

mais lors de l'exécution, il ne fonctionne pas correctement.

Ce programme simple vérifie l'état de mon compte.

si la connexion de compte, il retourne avec succès un code source qui comprennent 'top.location ='

dans la source, et si la connexion n'a pas inclus le retourner 'top.location ='

intérieur account.txt est suivi premier et troisième compte est compte alived

, mais seulement le premier compte peut vérifier, après le premier compte autre compte ne peut pas vérifier

Je ne sais pas ce qui ne va pas avec elle

ph896011 pk1089

fsadfasdf dddddss

ph896011 pk1089

suivant est source de delphi

si quelqu'un me aider beaucoup apprecated!

unité Unité1;

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, 
    IdTCPClient, IdHTTP, IdCookieManager, ExtCtrls; 

type 
    TForm1 = class(TForm) 
    Button1: TButton; 
    IdHTTP1: TIdHTTP; 
    Memo1: TMemo; 
    IdCookieManager1: TIdCookieManager; 
    lstAcct: TListBox; 
    result: TLabel; 
    Edit1: TEdit; 
    Timer1: TTimer; 
    procedure Button1Click(Sender: TObject); 
    //procedure FormCreate(Sender: TObject); 
    //procedure FormClose(Sender: TObject; var Action: TCloseAction); 
    private 
    { Private declarations } 
    public 
    AccList: TStringList; 
    IdCookie: TIdCookieManager; 
    CookieList: TList; 
    StartCnt: Integer; 
    InputCnt: Integer; 
    WordList: TStringList; 
    WordNoList: TStringList; 
    WordCntList: TStringList; 
    StartTime: TDateTime; 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
var 

    i: Integer; 
    //temp: String; 
    lsttemp: TStringList; 
    sl : tstringlist; 
    //userId,userPass: string; 
begin 
    InputCnt:= 0; 
    WordList := TStringList.Create; 
    CookieList := TList.create; 
    IdCookie := TIdCookieManager.Create(self); 


    if FileExists(ExtractFilePath(Application.ExeName) + 'account.txt') then 
    WordList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'account.txt'); 

    WordNoList:= TStringList.Create; 
    WordCntList := TStringList.Create; 
    lsttemp := TStringList.create; 
    sl :=Tstringlist.Create; 
try 
    try 
    for i := 0 to WordList.Count -1 do 
    begin 
     ExtractStrings([' '], [' '], pchar(WordList[i]), lsttemp); 
     WordNoList.add(lsttemp[0]); 
     //ShowMessage(lsttemp[0]); 
     WordCntList.add(lsttemp[1]); 
     //ShowMessage(lsttemp[1]); 

     sl.Add('ID='+ lsttemp[0]); 
     sl.add('PWD=' + lsttemp[1]); 
     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; 
     ShowMessage('Alive Acc!'); 
     //result.Caption := 'alive acc' ; 
     sleep(1000); 
     Edit1.Text := 'alive acc'; 
     lsttemp.Clear; 
     Memo1.Text := ''; 
     //memo1.Text := IdHTTP1.Get('https://user.buddybuddy.co.kr/Login/Logout.asp'); 
     Sleep(1000); 
     end; 


     if pos('top.location =', memo1.Text) <> 1 then 

     begin 
     application.ProcessMessages; 
     ShowMessage('bad'); 
     Edit1.Text := 'bad'; 
     //edit1.Text := 'bad'; 
     lsttemp.Clear; 
     memo1.Text := ''; 
     sleep(1000) ; 
     end; 
     Edit1.Text := ''; 
    end; 

    finally 
    lsttemp.free; 
    end; 
    StartCnt := lstAcct.items.Count; 
    StartTime := Now; 

finally 
    sl.Free; 
end; 
end; 



end. 

Répondre

2

Juste avant:

sl.Add('ID='+ lsttemp[0]); 

Do:

sl.Clear; 

Sur la première manche de votre "SL" détient les deux paramètres POST, mais à moins que vous ne videz pas sur la deuxième manche, vous continuez simplement à ajouter des paramètres, ce qui complique le serveur HTTP auquel vous essayez de vous connecter!

Ce n'est peut-être pas votre seul problème, mais c'est sûrement l'un des problèmes.

+0

merci beaucoup! cela m'a grandement aidé! ^^ – paul