![]() |
ReadTimeout bei Download mit Indy
Ich habe mit den Indy 9 ein Problem. Ich lade mit folgendem Code eine Datei aus dem Internet herunter und packe sie auf den Desktop:
Delphi-Quellcode:
var
lStream: TFileStream;
Delphi-Quellcode:
URL_From: *irgendeine URL*
HTTP.ReadTimeout := 5000; //Das sollte angeblich in einem Thread mit ähnlichem Problem helfen, war aber vergebens
HTTP.Head(URL_From); lStream := TFileStream.Create(URL_To, fmCreate or fmShareDenyNone); Try HTTP.Get(URL_From, lStream); Finally If Assigned(lStream) then lStream.Free; end; URL_To: *irgendein lokaler Pfad* Jedes mal kommt ein Read Timeout und manchmal schmettern Vista noch dazwischen, dass auf die Datei nicht zugegriffen werden kann, weil eventuell ein anderer Prozess auf sie zugreift. Aber mehr als da im Code steht, mache ich auch nicht mit der Datei. |
Re: ReadTimeout bei Download mit Indy
Hallo Christopher,
du kannst die Datei auch in mehreren Stücken laden. Das sieht vom Prinzip her dann ungefähr so aus:
Delphi-Quellcode:
Grüße vom marabu
function HTTPDownload(const url, fn: string): Boolean;
var s: TStream; http: TIdHTTP; begin http := TIdHTTP.Create(nil); try if FileExists(fn) then s := TFileStream.Create(fn, fmOpenReadWrite or fmShareDenyWrite) else s := TFileStream.Create(fn, fmCreate); http.Request.ContentRangeStart := s.Size; http.Request.ContentRangeEnd := Pred(http.Response.ContentLength); http.Get(url, s); finally http.Free; s.Free; end; end; |
Re: ReadTimeout bei Download mit Indy
Ja, danke. Aber ich verstehe nicht, was mir Delphi damit sagen will. Wo liegt das Problem? Die Datei ist gerade mal 600 kb groß.
Ich weich auch gerna auf andere Alternativen aus, mich interessiert aber, warum er das nicht machen will. |
Re: ReadTimeout bei Download mit Indy
Falls ein Größenproblem vorliegt, dann nicht auf der Client-Seite. Beachte aber, dass du eventuell Redirects zulassen musst.
Genaueres kannst du dir im FireFox anschauen, wenn du das Add-On "Live HTTP Headers" installiert hast. |
Re: ReadTimeout bei Download mit Indy
Deine Idee hat leider nicht geklappt. Was meinst du mit redirects? Ich google mal, ob ich dann verstehe was du damit meinst. :p
Ich finde redirect nur als "Weiterleitung". Was hat das mit Dateidownloads zu tun. Wenn das gleich nicht klappt, nenn ich die exe auf dem Server in txt um, les die Seite ein, speicher sie als Textdatei und benennen sie wieder in eine EXE um. Nicht elegant, klappt aber ... |
Re: ReadTimeout bei Download mit Indy
Ich glaube ich habe den Fehler gefunden. Dazu habe ich mal eine grundlegende Frage.
Mit meiner KomponenteHTTP von idHTTP auf der Form ging es nicht. Ich hatte sie schon vorher mal benutzt. Wenn ich eine 2 raufmache namens HTTP2 klappt es. Muss ich nach einer Get oder Post-Abfrage mit der Komponente irgendwas machen? Sie zurücksetzen oder so? .Free geht ja schlecht. Ich hab sie ja auf der Form und will sie mehrmals benutzen. Edit: Verdammt. :wall: Doppelpost ... Sorry. :oops: |
Re: ReadTimeout bei Download mit Indy
Zitat:
|
Re: ReadTimeout bei Download mit Indy
Ich hab alle von der Form genommen, HTTP als TidHTTP dklariert. Jetzt mach ich immer:
Create. Get-Abfrage Free Create. Get-Abfrage Free Create. Get-Abfrage Free Create. Get-Abfrage Free Create. Get-Abfrage Free Create. Get-Abfrage Free Und das alle 5 Sekunden. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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