2010-05-20 98 views
0

即時通訊新德爾福。也是編程世界的新手。德爾福idhttp後相關的問題

我做了一些簡單的使用idhttp模塊的後期軟件。

但是當執行它時,它不能正常工作。

這個簡單的程序是檢查我的帳戶狀態。

如果帳戶登錄成功使其返回一些源代碼,其中包括「top.location =」

在源

,如果登錄失敗它返回不包括「top.location =」

內部account.txt就是按照第一和第三個帳戶是alived帳戶

,但只有第一個帳戶可以查詢,第一個帳戶後,其他帳戶不能檢查

我不知道有什麼不妥的地方

ph896011 pk1089

fsadfasdf dddddss

ph896011 pk1089

以下是德爾福

如果任何一個可以幫助我很多apprecated的源泉!

unit Unit1;

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. 

回答

2

權利之前:

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

務必:

sl.Clear; 

在第一次運行的 「SL」 擁有兩個POST參數,但除非你清楚它的第二輪,你只是不斷添加參數,混淆你正在嘗試連接的HTTP服務器!

這可能不是你唯一的問題,但這肯定是問題之一。

+0

非常感謝!這對我很有幫助! ^^ – paul 2010-05-20 09:59:47