因为该构件是异步的,循环会GET出错,你应在OnSuccess执行累计,大致如下: Var count : Integer = 0;Procedure Form1.Button1Click(...) Begin nmhttp1.Get(...) End;Procedure Form1.Nmhttp1Success(...) Begin Inc(Count); If Count < 10 Then nmhttp1.Get(...) Else Count := 0; End;
那么,如此一定行: const wm_fireaction = wm_user+$1234; Type Form1=Class(...) ... private procedure WMFireAction( Var msg : TMsg ); message wm_fireaction; Var count : Integer = 0;procedure Form1.WMFireAction( Var msg: TMsg ); Begin nmhttp1.Get(...) End; Procedure Form1.Button1Click(...) Begin PostMessage( handle, wm_fireaction, 0, 0 ); End;Procedure Form1.Nmhttp1Success(...) Begin Inc(Count); If Count < 10 Then PostMessage( handle, wm_fireaction, 0, 0 ) Else Count := 0; End;
NMHTTP1->InputFileMode = false;
NMHTTP1->OutputFileMode = false;
NMHTTP1->ReportLevel = Status_Basic;
if (CheckBox1->Checked)
{
NMHTTP1->Proxy = Edit11->Text;
NMHTTP1->ProxyPort = StrToInt(Edit12->Text);
}
NMHTTP1->HeaderInfo->Cookie = Edit5->Text;
NMHTTP1->HeaderInfo->LocalMailAddress = Edit6->Text;
NMHTTP1->HeaderInfo->LocalProgram = Edit7->Text;
NMHTTP1->HeaderInfo->Referer = Edit8->Text;
NMHTTP1->HeaderInfo->UserId = Edit9->Text;
NMHTTP1->HeaderInfo->Password = Edit10->Text;
NMHTTP1->Get(Edit1->Text);
Memo1->Text = NMHTTP1->Body;
Memo2->Text = NMHTTP1->Header;
if (NMHTTP1->CookieIn != "")
ShowMessage("Cookie:\n"+NMHTTP1->CookieIn);
Var count : Integer = 0;Procedure Form1.Button1Click(...)
Begin
nmhttp1.Get(...)
End;Procedure Form1.Nmhttp1Success(...)
Begin
Inc(Count);
If Count < 10 Then nmhttp1.Get(...)
Else Count := 0;
End;
const wm_fireaction = wm_user+$1234;
Type Form1=Class(...)
...
private
procedure WMFireAction( Var msg : TMsg ); message wm_fireaction;
Var count : Integer = 0;procedure Form1.WMFireAction( Var msg: TMsg );
Begin
nmhttp1.Get(...)
End;
Procedure Form1.Button1Click(...)
Begin
PostMessage( handle, wm_fireaction, 0, 0 );
End;Procedure Form1.Nmhttp1Success(...)
Begin
Inc(Count);
If Count < 10 Then PostMessage( handle, wm_fireaction, 0, 0 )
Else Count := 0;
End;