![]() |
IdHTTP und ein ungewöhnlicher Doppelpost
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; |
AW: IdHTTP und ein ungewöhnlicher Doppelpost
Könnte mir vorstellen, dass du in der TIdHTTP Komponente
Delphi-Quellcode:
und
HandleRedirects := True;
Delphi-Quellcode:
eingestellt hast und diese dann das auf die weitergeleitete URL nochmals hochläd. Prüfe einfach mal via WireShark was da im Detail abgeht. Dein Vorhaben sieht hier auch sehr nach "Grauzone" aus. Quellcode formatieren! try..finally..end benutzen!
RedirectMaximum > 0;
|
AW: IdHTTP und ein ungewöhnlicher Doppelpost
Hallo geskill
Danke für deine Antwort, ja habe HandleRedirects auf true und das das Redirect Maximum auf 2. Geprüft habe ich es ja schon und es läuft folgendermaßen ab: Mein Upload startet... Mein Upload ist bei 100% und abgeschlossen.. Mein Sniffer empfängt die Antwort vom Server mit der *.html wo die hochgeladene Datei angesteuert werden kann... Mein Programm schreibt allerdings nicht die Antwort vom Server in das Memo sondern startet dann den gleichen Upload nochmal Wenn der zweite Upload bei 100% ist, wird auch in dem Memo die richtige Antwort ausgegeben. Nur ein Upload zuspät. ;) Zum Thema Grauzone, in der AGB des hier benutzten One Click Hosters steht nirgends das man ihre Engine nicht über nen Third Party Programm ansteuert darf. Solange ich deren AGB´s Kenne und Akzeptiere bin ich auf der Richtigen Seite, sons wären jegliche Scripts, Programme (jDownloader), ect nicht zugelassen. |
AW: IdHTTP und ein ungewöhnlicher Doppelpost
Nachdem du das hochgeladen hast, macht der Server von Freakshare einen Weiterleitung auf eine HTML Antwortseite, die du gerne haben willst. Die TIdHTTP Komponente denkt aber, dass es sich bei der Weiterleitung um eine Korrektur handelt (da
Delphi-Quellcode:
), sprich es sendet die Upload-Daten nochmals an diese HTML Antwortseite. Veränderte RedirectMaximum mal auf 0/1; dies kannst du ja auch erst nach dem erfolgreichen Login machen.
RedirectMaximum = 2
|
AW: IdHTTP und ein ungewöhnlicher Doppelpost
das war ne gute idee, ich dachte schon das würde den gewünschten erfolg erzielen aber leider negativ, auch wenn ich RedirectMaximum nach dem login unter 2 setze bleibt jedes mal der redirect zur Html aus wo die Links für den Hochgeladen File stehen.
Also muss dieser Doppelte Upload irgendwo vorher zustande kommen. |
AW: IdHTTP und ein ungewöhnlicher Doppelpost
Vielleicht kannst du da in OnRedirect mit Handled oder so ähnlich etwas machen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz