Entwickler-Ecke

Internet / Netzwerk - Dateidownload per Tidhttp


Robinator - Di 07.02.06 23:32
Titel: Dateidownload per Tidhttp
Guten tag,

ich versuche nun schon seit einer ganzen weile mit meinem Programm .pls dateien von der http://www.shoutcast.com page herunterzuladen. Leider gelingt das mit den von mir probierten ansätzen nicht.

hier mein code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedure Tform4.DownloadFile ( URL : String; Path : String );
var
  Datei : TfileStream;
begin

  Datei:=TFileStream.create(Path ,fmCreate);
   try
    IdHttp1.Get(URL,Datei);
   finally
    Datei.free;
   end;
end;


Wenn ich das nun folgendermassen aufrufe:


Delphi-Quelltext
1:
DownloadFile('http://yp.shoutcast.com/sbin/shoutcast-playlist.pls?rn=2297&file=filename.pls',ExtractFilePath(Application.ExeName) + 'tmp.pls');                    

bekomme ich nur eine HTTP 403 fehlermeldung.

Ich habe auch schon mit .post und .doRequest herumprobiert - leider mit dem gleichen Ergebniss.

Wenn jemand einen Tip für mich hat wäre ich sehr dankbar ;)

grüsse RoB


alias5000 - Di 07.02.06 23:42
Titel: Re: Dateidownload per Tidhttp
user profile iconRobinator hat folgendes geschrieben:
Guten tag,

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedure Tform4.DownloadFile ( URL : String; Path : String );
var
  Datei : TfileStream;
begin

  Datei:=TFileStream.create(Path ,fmCreate);
   try
    IdHttp1.Get(URL,Datei);
   finally
    Datei.free;
   end;
end;



Du darfst den Stream nicht gleich freigeben, weil die Datei ja Schritt für Schritt in einem anderen Thread heruntergeladen wird. Wenn die Operation beendet ist, bekommst du das Ereignis OnWorkEnd. Und frühestens dort darfst du den Stream freigeben


Robinator - Di 07.02.06 23:54

Die Funktion funktioniert bei anderen dateien ansich reibungslos, von daher würde ich vermuten, dass der Hund eher woanders begraben liegt. Ausserdem dürfte doch ein zu frühes Freigeben des Streams zu einem StreamError führen und nicht zu einer HTTP 403 fehlermeldung.

grüsse