Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML-Datei von Server abrufen und lokal Speichern (https://www.delphipraxis.net/14540-html-datei-von-server-abrufen-und-lokal-speichern.html)

netjoe 11. Jan 2004 10:03


HTML-Datei von Server abrufen und lokal Speichern
 
Hallo,

ich bin absoluter Delphi Newbie und habe folgendes Problem:

Ich möchte eine HTML-Datei von einem Server abrufen und diese lokal abspeichern.
Die Verbindung zum Server findet über einen bestimmten Port statt.
Kann mir jemand weiterhelfen?

fcg 11. Jan 2004 10:10

Re: HTML-Datei von Server abrufen und lokal Speichern
 
morgen

einer Datei vom Server abrufen (ohne FTP, nur wie sie der Browser och azeigt) mit URlDownloadToFile (uses URLMon).

fcg

Giantics 11. Jan 2004 10:17

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Zitat:

Ich möchte eine HTML-Datei von einem Server abrufen und diese lokal abspeichern.
Die Verbindung zum Server findet über einen bestimmten Port statt.
Kann mir jemand weiterhelfen?
Das geht auch mit den Indy-Komponenten. Mit TIdHttp kannst du dir die Datei von einer beliebigen http-Adresse ziehen. (http://www.nevrona.com/indy)

cYaONE 11. Jan 2004 10:36

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:/test.html', fmCreate);
  try
    IdHTTP1.Get('http://www.server.com/test.html', FileStream);
  finally
    FileStream.Free;
  end;
end;
So ungefähr sollte das funktionieren ;)

netjoe 11. Jan 2004 10:43

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Wow das ging ja schnell!!!

Vielen Dank für die Antworten

[edit=Sharky]Doppelposting gelöscht. Mfg, Sharky[/edit]

netjoe 11. Jan 2004 11:43

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Ok das ganze funktioniert soweit. :-D
Allerdings wird das HTTP-Protokoll gar nicht für die Datenübertragung verwendet.
Hab mir das ganze mal mit dem Ethereal Netzwerkanalysator angeschaut. Die Datenübertragung
läuft nur über das TCP-Protokoll ab. Es muss also eine TCP-Verbindung mit einem bestimmten
Port aufgebaut werden und die Daten downgeloaded werden.
Kann mir jemand helfen?

Sharky 11. Jan 2004 11:47

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Hai netjoe,

HTTP wird standard mässig über Port 80 des TCP-Protokolles abgewickelt.

cYaONE 11. Jan 2004 11:49

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Ähm, HTTP baut auf TCP auf, soviel ich weiß ;)
Ein HTTP-Server läuft meist auf Port 80 von dem du dann Webseiten runterladen kannst!

netjoe 11. Jan 2004 11:56

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Ja, das ist mir schon klar aber die gesamte Kommunikation läuft nur über TCP ab,
oder sehe ich das falsch?
Ich gebe im IE-Browser einer URL ein und einen bestimmten port:

z.B. http://www.meineadresse.org:3345

der Browser zeigt mir dann die Daten die dort liegen. Das ganze soll aber nicht über
den Browser laufen sondern durch ein eigenstständiges Delphi Programm.

cYaONE 11. Jan 2004 11:59

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Und was ist dabei jetzt das Problem?

netjoe 11. Jan 2004 12:14

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Das Problem ist das ich das HTTP-Protokoll, auf dem der IdHTTP aufbaut wahrscheinlich nicht verwenden kann.

Der folgende Code funktioniert nicht:
Delphi-Quellcode:
 procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:/test.html', fmCreate);
  try
    IdHTTP1.Get('http://www.sriptroute.org:3967', FileStream);
  finally
    FileStream.Free;
  end;
end;
Hoffentlich langweile ich dich nicht mit meinen Fragen ...

cYaONE 11. Jan 2004 12:33

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Probiers mal so:

Delphi-Quellcode:
IdHTTP1.Port := 3967;

Sharky 11. Jan 2004 12:34

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Hai netjoe,

es gibt "kein" HTTP-Protokoll. Die kommunikation mit WEB-Server läuft immer über TCP.

netjoe 11. Jan 2004 13:37

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Die Zeile

Delphi-Quellcode:
IdHTTP1.Port := 3967;
bringt leider auch keine Verbesserung.
Ich verzweifel bald ... :pale:

Es muss doch eine Lösung geben ...

luwo 19. Jan 2004 23:32

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Zitat:

Zitat von Sharky
Hai netjoe,

es gibt "kein" HTTP-Protokoll. Die kommunikation mit WEB-Server läuft immer über TCP.

da bin ich aber anderer Meinung :stupid:
http heisst "hyper-text-transfer-protocol" und ist ergo tatsächlich ein Protokoll :wink:

TCP/UDP liegt nur in einer tieferen OSI/ISO-Schicht.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream: TFileStream;
begin
  FileStream := TFileStream.Create('C:/test.html', fmCreate);
  try
    IdHTTP1.Get('http://www.sriptroute.org:3967', FileStream);
  finally
    FileStream.Free;
  end;
end;
Diese Routine sollte funktionieren, wenn die Zeile "http://www.sriptroute.org:3967"
in einem Browser (z.B. IE) tatsächlich ein Ergebnis liefert.
Wenn dem so ist, horcht auf der Maschine www.scriptroute.org auf Port 3967 tatsächlich
ein Web-Server (z.B. Apache, IIS etc.) und liefert auf Web-Anfragen auch "Web-Antworten".

Sollte auf diesem Port aber ein anderes Programm lauschen, das eben nicht das Web-Protokoll (HTTP)
"spricht", wird der Versuch mit idHTTP als Zugriffskomponente immer fehlschlagen.

Eine "nativere" Möglichkeit ist es, mit der idTCPClient-Komponente
zum Server zu verbinden und gucken was dieser "ausspuckt"...

@netjoe:
Ist der Server denn du abrufen willst öffentlich erreichbar?
dann könnte man ja mal gucken, ob tatsächlich ein Web-Server
auf diesem Port horcht...

luwo

Sharky 20. Jan 2004 06:20

Re: HTML-Datei von Server abrufen und lokal Speichern
 
Zitat:

Zitat von luwo
...da bin ich aber anderer Meinung :stupid:
http heisst "hyper-text-transfer-protocol" und ist ergo tatsächlich ein Protokoll :wink:

TCP/UDP liegt nur in einer tieferen OSI/ISO-Schicht.
....

Jep, das ist klar. Aber ich hatte das Gefühl das hier TCP und HTTP als Protokoll der selben Ebene gesehen werden. :stupid:


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