AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi idhttp + Redirect behandeln
Thema durchsuchen
Ansicht
Themen-Optionen

idhttp + Redirect behandeln

Ein Thema von codipodi · begonnen am 29. Apr 2012 · letzter Beitrag vom 5. Mai 2012
Antwort Antwort
Benutzerbild von codipodi
codipodi

Registriert seit: 29. Apr 2012
Ort: Duisburg
16 Beiträge
 
Delphi 2007 Professional
 
#1

AW: idhttp + Redirect behandeln

  Alt 2. Mai 2012, 08:00
Hallo Klaus,
vielen Dank für deine Antwort.

Also der idhttp steht bereits auf HandleRedirects=true.

Ich habe aber das Gefühl das trotzdem bei jedem Redirect das FWorkEndevent ausgelöst wird. Oder ist das nicht korrekt?

Vielen Dank.

LG,
Christian
Christian
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: idhttp + Redirect behandeln

  Alt 2. Mai 2012, 08:22
Ich habe aber das Gefühl das trotzdem bei jedem Redirect das FWorkEndevent ausgelöst wird. Oder ist das nicht korrekt?
.. da bin ich mir nicht 100%ig sicher.
Bei jedem Redirect wird ja auch eine Information zum Client zurückgeschickt (die neue URL)
es ist durchaus nachvollziehbar das dadurch (wenn die Information komplett beim Client angekommen ist) ein WorkEnd Event ausgelöst wird.

Aber sollte HandleRedirect dieses nicht vermeiden?

Delphi-Quellcode:
procedure TDownloadThread.Execute;
var
  IdHTTP: TIdHTTP;
begin
  IdHTTP := TIdHTTP.Create(nil);
  try
    idHTTP.HandleRedirects := true; // hast Du das eingefügt?
    IdHTTP.OnWorkBegin := FWorkBeginEvent; //FWorkBeginEvent;
    IdHTTP.OnWork := FWorkEvent;
    IdHTTP.OnWorkEnd := FWorkEndevent;
    FCode := IdHTTP.Get(URL);
  finally
    IdHTTP.Free;
  end;
  Synchronize(ShowCode);
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von codipodi
codipodi

Registriert seit: 29. Apr 2012
Ort: Duisburg
16 Beiträge
 
Delphi 2007 Professional
 
#3

AW: idhttp + Redirect behandeln

  Alt 2. Mai 2012, 08:28
Hallo Klaus,
erneut besten Dank für deine Antwort.

Die Zeile hatte ich bereits integriert. Aber irgendwie habe ich das Gefühl das dennoch das EndEvent ausgelöst wird.

Je nach URL habe ich mit eigenen Augen gesehen das der Fortschrittsbalken komplett bis zum Ende springt innerhalb einer Sekunde und das EndEvent auslöst. Dann allerdings wieder neu anfängt die Datei zu laden. Daher halte ich diesen Effekt für einen Redirect.

Durch dieses vorzeitige auslösen des EndEvents kann die Datei natürlich nicht weiterverarbeitet werden da sie ja noch garnicht richtig heruntergeladen wurde.

LG,
Christian
Christian
  Mit Zitat antworten Zitat
Benutzerbild von codipodi
codipodi

Registriert seit: 29. Apr 2012
Ort: Duisburg
16 Beiträge
 
Delphi 2007 Professional
 
#4

AW: idhttp + Redirect behandeln

  Alt 4. Mai 2012, 08:46
Nochmal ein Hilferuf an alle:
Wie kann ich das Problem lösen? Entweder habe ich ein Brett vor dem Kopf oder das Problem ist doch größer als gedacht.

Ich habe leider überhaupt keine Idee wie ich diesen Fehler aus der Welt schaffen kann, meine gepostete Lösung funktioniert ja anscheinend nicht.

Über Hilfe und Anmerkungen jeglicher Art wäre ich wirklich äußerst dankbar.

in verzweifelter Hoffnung,
Christian
Christian
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

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

AW: idhttp + Redirect behandeln

  Alt 4. Mai 2012, 09:59
Dann allerdings wieder neu anfängt die Datei zu laden. Daher halte ich diesen Effekt für einen Redirect.
Hallo,
mittels Wireshark lässt sich der komplette Datenverkehr aufzeichnen. Damit solltest du problemlos herausbekommen ob es eine Weiterleitung gibt. Ich glaube eher, dass die Fortschrittsbalken etwas spinnen weil es da immer wieder mal Probleme mit der Firewall o.ä. gibt. Mit dem Debugger Haltepunkte setzen und durch den Code steppen wäre auch noch eine Möglichkeit

Ein weiterer möglicher Ansatz wäre mit der Dateigröße zu arbeiten (TIdHTTP.Response.ContentLength) und immer zu schauen, wie viel hat er im OnWork-Work Event gerade herunter geladen (was fehlt noch).

Und zuletzt bleibt mir noch zu sagen, dass es natürlich immer besser ist mit einer aktuellen Indy Version zu arbeiten.

Grüße
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von codipodi
codipodi

Registriert seit: 29. Apr 2012
Ort: Duisburg
16 Beiträge
 
Delphi 2007 Professional
 
#6

AW: idhttp + Redirect behandeln

  Alt 4. Mai 2012, 10:46
Hallo Sebastian,
vielen Dank für deine Antwort.

Das Problem ist allerdings das nicht nur der Balken vorspringt sondern auch das Endevent ausgelöst wird. Ich habe dies überprüft.

Wenn mir niemand sagen kann warum meine Prozedur nicht funktioniert, gibt es dann eine andere Möglichkeit zu erkennen ob das Event zu früh ausgelöst wird?

Ich werde zunächst versuchen zu prüfen ob TIdHTTP.Response.ContentLength zu klein für eine richtige Datei ist.

LG,
Christian
Christian
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

AW: idhttp + Redirect behandeln

  Alt 4. Mai 2012, 16:21
Entweder habe ich ein Brett vor dem Kopf
Yes, Sir.
Delphi-Quellcode:
procedure TDownloadThread.Execute;
var
  IdHTTP: TIdHTTP;
begin
  IdHTTP := TIdHTTP.Create(nil);
  try
    idHTTP.HandleRedirects := true; // hast Du das eingefügt?
    IdHTTP.OnWorkBegin := FWorkBeginEvent; //FWorkBeginEvent;
    IdHTTP.OnWork := FWorkEvent;
    IdHTTP.OnWorkEnd := FWorkEndevent;
    FCode := IdHTTP.Get(URL);
    // HIER !!
    // ist die Stelle, an der alle Redirekts ausgeführt wurden
    // und die Daten heruntergeladen wurden (oder auch nicht falls Status <> 200)
  finally
    IdHTTP.Free;
  end;
  Synchronize(ShowCode);
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von codipodi
codipodi

Registriert seit: 29. Apr 2012
Ort: Duisburg
16 Beiträge
 
Delphi 2007 Professional
 
#8

AW: idhttp + Redirect behandeln

  Alt 4. Mai 2012, 19:30
Hallo Andreas,
vielen Dank für deine Antwort. Leider werde ich daraus nicht ganz schlau

Möchtest du mir damit sagen das es beim Redirect garnicht zum Endevent kommt oder das ich mit meiner Annahme zwar richtig liege aber das Problem im falschen Bereich behandle?

LG,
Christian
Christian
  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 00:50 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