delphi idhttp发布相关问题 [英] delphi idhttp post related question
问题描述
我是delphi的新手.而且对于编程世界来说也几乎是新的.
im new to delphi. and also almost new to programming world.
我使用idhttp模块制作了一些简单的发布软件.
i was made some simple post software which using idhttp module.
但是执行它时,它不能正常工作.
but when execute it , it not correctly working.
这个简单的程序是检查我的帐户状态.
this simple program is check for my account status.
如果帐户登录成功,它将返回一些源代码,其中包括"top.location ="
if account login successfully it return some source code which include 'top.location ='
在源代码中,如果登录失败,则返回不包含"top.location ="
in source, and if login failed it return not included 'top.location ='
inside account.txt是第一个帐户,而第三个帐户是有效帐户
inside account.txt is follow first and third account was alived account
但只有第一个帐户可以检查,第一个帐户之后其他帐户不能检查
but only first account can check, after first account other account can't check
我不知道这是怎么回事
ph896011 pk1089
ph896011 pk1089
fsadfasdf dddddss
fsadfasdf dddddss
ph896011 pk1089
ph896011 pk1089
以下是delphi的来源
following is source of delphi
如果有人帮助我深表感谢!
if any one help me much apprecated!
unit Unit1;
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.
推荐答案
就在之前:
sl.Add('ID='+ lsttemp[0]);
做:
sl.Clear;
在第一次运行时,"SL"将保留两个POST参数,但是除非您在第二次运行中将其清除,否则您将继续添加参数,从而使您尝试连接的HTTP服务器感到困惑!
On the first run your "SL" holds the two POST parameters, but unless you clear it on the second run, you just keep adding parameters, confusing the HTTP server you're trying to connect to!
这可能不是您唯一的问题,但这肯定是问题之一.
That might not be your only problem, but that's surely one of the problems.
这篇关于delphi idhttp发布相关问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!