Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem beim Download mit IdHTTP (https://www.delphipraxis.net/59787-problem-beim-download-mit-idhttp.html)

Metatron220 28. Dez 2005 16:36


Problem beim Download mit IdHTTP
 
Ich möchte gerne über ein IdHTTP eine Datein in einen Filestream laden. Das ist auch nicht weiter das Problem. Aber wie komme ich an die Datei, wenn die URL (wie auch hier im Forum) so aussieht:
http://www.delphipraxis.net/download.php?id=16292

Vielen Dank schon mal im Voraus.

marabu 28. Dez 2005 17:43

Re: Problem beim Download mit IdHTTP
 
Die erste Klippe ist oft ein HTTP Redirect, aber die umschiffst du elegant, indem du die property HandleRedirects der Indy HTTP Client-Komponente auf TRUE setzt. Danach wird es haariger, weil du damit rechnen musst, dass dir noch ein HTTP Refresh begegnet. Im Prinzip musst du zuerst mal in einen MemoryStream laden. Wenn der ContentType text/html ist, dann musst du die Header nach META REFRESH durchsuchen und auf den angegebenen URL umschwenken. Sobald du etwas anderes als text/html serviert bekommst, kannst du den MemoryStream in einen FileStream kopieren und fertig.

Grüße vom marabu

Metatron220 28. Dez 2005 17:58

Re: Problem beim Download mit IdHTTP
 
Vielen Dank für die schnelle Hilfe. Das werde ich gleich mal ausprobieren.

Metatron220 28. Dez 2005 18:27

Re: Problem beim Download mit IdHTTP
 
Jetzt hab ich leider ein weiteres Problem. Wie überprüfe ich den ContentType? Und des weiteren weiß ich leider auch nicht wie ich den Header durchsuche und dann auf die URL zugreife. Tut mir wirklich leid aber ich bin ein absoluter Anfänger was Indy angeht :/
Vielen Danke schon mal.

marabu 28. Dez 2005 19:35

Re: Problem beim Download mit IdHTTP
 
Den ContentType erhältst du ziemlich einfach, wenn du HTTP.Request.ContentType untersuchst. Das Refresh-Meta-Tag ist schwieriger zu besorgen, weil du den HTML-Code analysieren musst. Dazu brauchst du einen Parser, ein DOM FrameWork, regular expressions oder ein paar clevere Text-Routinen. Wie willst du weiter machen?

marabu

Metatron220 28. Dez 2005 22:38

Re: Problem beim Download mit IdHTTP
 
Am besten mit dem, was am einfachsten zu realisieren ist. Ich kenne mich mit allem davon nicht aus. ^^

marabu 29. Dez 2005 10:27

Re: Problem beim Download mit IdHTTP
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Metatron220
Am besten mit dem, was am einfachsten zu realisieren ist.

Mir gefällt der Ansatz mit dem Parser. Ich habe dir ein kleines Demo-Projekt erstellt, mit dem du den HTML-Code einer Seite daraufhin analysieren kannst, ob ein refresh nötig ist. Die Demo verwendet den MSHTML Parser. Als kleine Besonderheit arbeite ich in der Demo mit den markup interfaces und verzichte auf die WebBrowser Komponente, da du die Seiten ja mit dem Indy HTTP-Client abholen möchtest. Wenn du keinerlei Erfahrung im Umgang mit dieser Technologie hast, dann solltest du dich ein wenig belesen, bevor du an der Prozedur ParseHTML Änderungen vornimmst.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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