AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke IdHTTP und ein ungewöhnlicher Doppelpost
Thema durchsuchen
Ansicht
Themen-Optionen

IdHTTP und ein ungewöhnlicher Doppelpost

Ein Thema von kingmarv · begonnen am 29. Sep 2011 · letzter Beitrag vom 30. Sep 2011
Antwort Antwort
kingmarv

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

IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 29. Sep 2011, 11: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
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#2

AW: IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 29. Sep 2011, 12:04
Könnte mir vorstellen, dass du in der TIdHTTP Komponente HandleRedirects := True; und RedirectMaximum > 0; 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!
Sebastian
  Mit Zitat antworten Zitat
kingmarv

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

AW: IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 29. Sep 2011, 12:55
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.
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#4

AW: IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 29. Sep 2011, 16:57
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 RedirectMaximum = 2 ), 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.
Sebastian
  Mit Zitat antworten Zitat
kingmarv

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

AW: IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 29. Sep 2011, 23:28
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: IdHTTP und ein ungewöhnlicher Doppelpost

  Alt 30. Sep 2011, 07:32
Vielleicht kannst du da in OnRedirect mit Handled oder so ähnlich etwas machen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz