Einzelnen Beitrag anzeigen

kingmarv

Registriert seit: 25. Aug 2009
14 Beiträge
 
#1

IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 29. Sep 2011, 10:21
Hallo

Ich möchte euch erstmal mein Problem schildern:
Ich habe probiert nen kleines Upload Tool für einen der vielen One Click Hoster zu Programmieren ála Rapdishare & Co.
Ich habe mir einen herrausgesucht der keine "öffentliche" Api anbietet, da ich gerne alles von vorne bis hinten selbst machen wollte.
Funktionieren tut das alles wunderbar, bis auf an der Stelle wo die Datei per POST an das Upload Script übergeben wird.
Die Datei wird einmal Hochgeladen, und wenn der Upload fertig ist, startet der gleiche Upload nochmal, was theoretisch technisch garnicht möglich ist weil vom One Click Hoster aus für jeden Upload ne neue Session ID generiert.
Ich habe auch ein TCP/IP Sniffer neben her laufen gehaben, meine Progressbar ist nicht fehlerhaft, wenn sie bei 100% ist Spuckt mir der Sniffer die Antwort vom Server aus das mit dem Upload alles geklappt hat.

Also hier meine Frage, warum startet er nach dem Upload direkt den gleiche Upload hinterher?
Ich hab schon alles in OnWork und WorkBegin kommentiert weil ich dachte das es daran liegt, hat aber keine änderung gebracht.
Ich poste mal den Source evt kann mir wer helfen.

Danke schonmal im vorraus.


Delphi-Quellcode:
postdata := tstringlist.Create;
 postdata.Add('user=xxxx') ;
  postdata.Add('&pass=xxxx') ;
  postdata.Add('&submit=Login') ;
  s:=idhttp1.Post('http://freakshare.com/login.html',postdata);
 memo1.Lines.Add(s);
postdata.Free;

/// Code zum filtern der Session IDs
///
///
///


stream:=TIdMultiPartFormDataStream.Create;


stream.AddFormField('APC_UPLOAD_PROGRESS',para2);
stream.AddFormField('APC_UPLOAD_USERGROUP',para3);
stream.AddFormField('UPLOAD_IDENTIFIER',para4);
stream.AddFile('file[0]','C:\VC_RED.cab', 'application/octet-');

//Label1.Caption:='Upload auf xxx. com';

glob:=true;
memo1.Clear;
s:=idhttp1.Post('http://'+para1+'.freakshare.com/upload.php',Stream);
memo1.text:=s;
stream.Free;
glob:=false;

procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
  var ElapsedTime : Cardinal;
begin

 if glob=true then begin

Gauge1.Progress:=AWorkCount;
ElapsedTime := SecondsBetween(Now,FStartDate);
statusbar1.Panels[0].Text:='Upload Progress: ' +inttostr(round(Aworkcount/1024))+' kb / '+inttostr(round(Gauge1.MaxValue/1024))+' kb.'+' - '+inttostr(ElapsedTime) ;

//IdAntiFreeze1.process;

end
else
begin
end;
 Application.ProcessMessages();

end;



procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
if glob=true then begin
Gauge1.MaxValue:=AWorkCountMax;
end;
end;

procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
 if glob=true then begin
Gauge1.MaxValue:=0;
glob:=false;
end;
end;
  Mit Zitat antworten Zitat