Autor Beitrag
f.stendike
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 15.07.03 22:48 
Hallo an alle da draussen!

Hab mal ne kurze Frage und auch wenn die Lösung mit Sicherheit ziemlich einfach ist komme ich leider nicht selbst drauf, da ich mich erst richtig in Delphi einarbeite momentan. Also ich habe folgendes Problem: Ich will mittels des Indy Http Clients eine Textdatei von einer URL downloaden. Ich habe dazu auch schon einen Tip im Web gefunden und folgendes kopiert bzw. selbst verändert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button9Click(Sender: TObject);
var rs: TFileStream;
begin
  http.Connect;
    try
      rs:=TFileStream.Create('c:\downloaddatei.txt', fmcreate);
      http.Get('Test.txt', rs);
    finally
      rs.free;
    end;
  http.Disconnect;
end;

Am ende des Vorganges erscheint auch die Meldung Connection closed gracefully, aber in der Datei steh nichts drin. Muss man mit dem Stream vielleicht noch irgendwas machen? Ich kenne mich mit Streams noch nicht gut aus, weil ich bisher noch nichts damit gemacht habe.

Vielen Dank für Vorschläge und Lösungen

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Di 15.07.03 23:30 
Hallo!

ausblenden Delphi-Quelltext
1:
http.Get('Test.txt', rs);					

Wassen dassen fürne URL :?: Unter 'Test.txt' wird sich wohl nichts finden lassen - das soll wohl 'http://www.irgendeinetolledomain.de/Test.txt' heißen! Ansonsten kannst Du ja mal versuchen, ob Dein Browser damit klarkommt - sollte er nicht. Ansonsten sehe ich keine Fehler im Programm

Gruß
Dietmar Brüggendiek
f.stendike Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 16.07.03 08:46 
Aber die Domain stellet man doch eigentlich unter der Eigenschaft Host des Http Clients ein, oder? Und dann in der Get Anweisung nur den Dateinamen, oder?
Aber das heisst das der FileStream die Daten mit dem Programmcode sofort in die Datei reinschreibt? muss man dem nicht noch ne write Anweisung oder so geben? Oder macht der das von alleine?
Ausserdem noch danke für die schnelle Antwort!
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mi 16.07.03 14:50 
also das http connect und disconnect brqauchst du nicht !! es reicht
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var buffer:tfilestream;
begin
  try
        buffer := tfilestream.create('download.txt',fmCreate or fmShareExclusive);
        try
           idhttp1.Get('http://www.auq.de',buffer);    // Datei wird per GET geladen
   finally
     buffer.free;
   end;

aber noch ein tipp: wenn du den text der textdatei in deinem delphi programm auswerten willst, dann kannst du auch mit
ausblenden Delphi-Quelltext
1:
string := idthttp1.get ('www.auq.de')					

dir den inhalt der test datei in einen string geben lassen.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
f.stendike Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 16.07.03 19:43 
Also ich weiss echt nicht, was ich falsch mache, aber es wird immer noch nichts bei mir angezeigt. Am Ende der Übertragung steht zwar immer "Connection closed gracefully", aber im Memo, in dem ich dann den heruntergeladenen String anzeigen möchte, steht nichts. Ich glaube ich mache noch was mit der URL - Angabe falsch. Hier mal mein exakt verwendeter Quellcode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var 
  s: String;
begin
  s := http.Get('www.meineURL.de/Test.txt');
  memo1.Lines := TStrings(s);
end;

Wenn ich die URL so in den Browser eingebe, erscheint der Text allerdings. Als Host habe ich bei der Komponente nichts angegeben. Lediglich den Port habe ich auf 80 gesetzt. Also noch mal ganz genau: Woran könnte das liegen und was muss ich dort genau als URL eintragen, bei der Eigenschaft Host eintragen und was muss ich für eine URL beim Download als Datei angeben und schreibt der Filestream das sofort in die Datei rein auf der Platte?

Gruss
f.stendike
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mi 16.07.03 20:01 
wie heisst denn die URL genau, die du runterladen willst ??? vielleicht hilft uns das weiter

_________________
In the beginning was the word.
And the word was content-type: text/plain.
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Mi 16.07.03 20:12 
Zwei Sachen:

1. Die URL benötigt das http:// am Anfang.

2. Ich würde
ausblenden Delphi-Quelltext
1:
Memo1.Lines.Text := s;					

benutzen.

Mit diesen beiden Änderungen geht es bei mir.

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
f.stendike Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 16.07.03 22:49 
Fragt mich echt nicht, was ich jetzt anders gemacht habe, aber jetzt klappt auf einmal beides, der Download als String und als Datei. Vielen Dank auf jeden Fall für die guten und schnellen Anregungen.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Do 17.07.03 17:59 
ja klar. bitte. dafür sind wir ja da !! :-D

_________________
In the beginning was the word.
And the word was content-type: text/plain.