![]() |
HTTP/1.1 404 Not Found umgehen?
Guten abend Leute,
Ich hole ueber die HTTP Komponente Dateien von einer PHP Seite. Ich muss schon die HTTP Komponente benutzen weil ich mich ueber Post vorher einloggen muss. Ich downloade die Dateien mittels diesen Code
Delphi-Quellcode:
Das komische ist manche Dateien laedt er ohne Probleme runter von der Seite aber bei manchen kriege ich nen HTTP/1.1 404 Error an der markierten Stelle im Code.
var
BytesKopiert, BytesInsgesamt : int64; lStream: TFileStream; begin Panel1.Visible := true; //Initialiesieren Label22.Caption := ''; BytesKopiert := 0; ProgressBar2.Position := 0; //In edit 1 steht die downzuladene Datei (z.b. [url]http://www.server.com/datei.dat[/url]) Label22.Caption := 'Prüfe Header'; // Durch die zwei nächsten Befehle wird die Größe ermittelt und ihn der Variable BytesInsgesamt abgespeichert HTTP.Response.Clear; HTTP.Head(Edit3.Text); BytesInsgesamt := HTTP.Response.ContentLength; <-----//HTTP/1.1 404 Error// //Wenn die Indy Komponente -1 zurückgibt dann bedeutet es des der die Dateigröße nicht zu verfügung //stellt uns somit kann die Datei ganz normall heruntergeladen werden (ohne Fortschrittsanzeige) if BytesInsgesamt = -1 then begin Label22.Caption := 'Normalles herunterladen'; Label23.Caption := 'Erstelle Datei'; //In Edit 2 steht welche Datei (z.b. C:\datei.dat) //Datei erstellen lStream:=TFileStream.Create(Edit2.Text, fmCreate or fmShareDenyNone); try //und "normal" herunterladen HTTP.Get(Edit3.Text, lStream); finally if Assigned(lStream) then lStream.Free; //FileStream freigeben wenn gesetzt end; //Alles auf fertig stellen Label22.Caption := 'Fertig'; Label23.caption := 'Fertig'; ProgressBar2.Position := 100; Panel1.Visible := false; exit; end; //Also wenn wir hier angelangt sind dann bedeutet es der Server hat uns die Dateigröße zur Verfügung gestellt. ProgressBar2.Max := BytesInsgesamt; Label23.Caption := 'Erstelle Datei'; //In Edit 2 steht welche Datei (z.b. C:\datei.dat) //Datei erstellen lStream:=TFileStream.Create(Edit2.Text, fmCreate or fmShareDenyNone); lStream.Position := 0; try repeat // Damit sich das Programm nicht aufhängt Application.ProcessMessages; //Nun setzen wir den Start nach die bereits kopierten Bytes HTTP.Request.ContentRangeStart := BytesKopiert; //Hier wird gebrüft ob die restlichen Bytes größer sind als cFileSplitSize if (BytesInsgesamt-BytesKopiert) > cFileSplitSize then begin //Hier wird einmal die cFileSplitSize eingestellt HTTP.Request.ContentRangeEnd := BytesKopiert+cFileSplitSize-1; end //Den rest der Datei else HTTP.Request.ContentRangeEnd := BytesInsgesamt; Application.ProcessMessages; //Den eingesttelten Teil herunterladen und ihn die Datei speichern HTTP.Get(Edit2.Text, lStream); //Progress und Status aktualliesieren ProgressBar2.Position := BytesKopiert; Label22.Caption := GetSizeName(BytesKopiert)+'/'+GetSizeName(BytesInsgesamt); //BytesKopiert weiter setzen BytesKopiert := BytesKopiert+cFileSplitSize; until (BytesKopiert >= BytesInsgesamt); //Schleife beenden wenn datei fertig finally if Assigned(lStream) then lStream.Free; //FileStream freigeben wenn gesetzt end; //Alles auf fertig stellen Label22.Caption := 'Fertig'; Label23.caption := 'Fertig'; ProgressBar2.Position := 100; Panel1.Visible := false; end; Gibt es eine Moeglichkeit trotsdem die Datei zu bekommen mittels HTTP.Get? Kann ich das irgendwie umgehen? Herzlichen Dank im voraus. MFG, Lucius. |
Re: HTTP/1.1 404 Not Found umgehen?
Zitat:
|
Re: HTTP/1.1 404 Not Found umgehen?
Hi jim_raynor, wenn ich den link im browser oeffne laedt er die Datei die ich mit Indy nicht bekomme einfach runter.
|
Re: HTTP/1.1 404 Not Found umgehen?
Zitat:
Zitat:
|
Re: HTTP/1.1 404 Not Found umgehen?
Ich glaube nicht denn bei andere Dateien funktioniert es auch ueber Edit3.Text.
|
Re: HTTP/1.1 404 Not Found umgehen?
Habe das Problem erkannt, in der Edit3.text kann manchmal eine Leerzeile voorkomen, die erkennt er dann nicht und plop da ist 404.
Denke das magische Wort zu meinem Problem ist stringreplace. MFG, Lucius. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 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