Einzelnen Beitrag anzeigen

Benutzerbild von Lun
Lun

Registriert seit: 4. Feb 2006
122 Beiträge
 
Delphi 2005 Professional
 
#1

idhttp.get erkennt Proxy Cache Progress Message nicht

  Alt 15. Feb 2008, 11:27
Hi @ll,

ich habe in der Suche versucht über das Thema Proxy Cache was zu finden aber bin leider nicht fündig geworden.

Ich habe folgendes Problem, ich habe eine Client - Anwendung bei der ich die indy 10 idhttp Komponente benutze.
Ich hole ein Zip Archiv über den Get Befehl, funktioniert soweit auch alles.

Wenn der Client ein Proxy Server verwendet, ist soweit auch kein Problem gebe die Authentifizierungsdaten mit usw.
alles in Ordnung.

Hat der Proxy aber noch einen Proxy Cache und es erfolgt eine Weiterleitung. Gibt es einen Http 302.
Soweit so gut, stelle ich HandleRedirect auf true.

Problem:
Nur der indy http client versteht dann nicht richtig die Progress Message vom Proxy, so das ein kleiner Teil
von der Datei an den Clienten weitergegeben wird. Der Indy Client downloaded diesen Teil und denkt danach er sei fertig.

Der Proxy ist aber derweil noch dabei die empfangene Datei zu speichern als lokale Kopie für den weiteren Gebrauch (macht nen Virenscan da drauf und was weiß ich noch.) Sprich mein Download ist dann incomplete.

Frage:

Gibt es eine Möglichkeit dem Idhttp Clienten beizubringen das er die Progress Message vom Proxy versteht? Oder liegt das
Problem dann bei dem Proxy Server da dieser vielleicht nicht den richtigen Progress abgibt? Und ich habe keinen Einfluss da
drauf?



relevanter Code:

Delphi-Quellcode:

   if(proxyAnmeldung = true) then
   begin
           IdHTTPGet.HTTPOptions := [hoInProcessAuth];
           IdHTTPGet.ProxyParams.BasicAuthentication := true;
           IdHTTPGet.ProxyParams.ProxyUsername := proxyUser;
           IdHTTPGet.ProxyParams.ProxyPassword := proxyPass;
   end;

  ziel := pfad;
  delete(ziel,1,pos('=',ziel));
  pfadundDatei := pfadtemp+ziel;

  lStream:=TFileStream.Create(pfadundDatei, fmCreate or fmShareDenyNone);
  lStream.Position := 0;

  try
      //Dateien werden übertragen
      IdHTTPGet.Get(link, lStream);
  finally
      if Assigned(lStream) then lStream.Free; //FileStream freigeben wenn gesetzt
      if (abbrechen = true) then deleteFile(pfadundDatei);
  end;
greetz Lun

Thx for help
  Mit Zitat antworten Zitat