Hi,
Ich benutze folgenden Code, um eine Datei über HTTP 1.0 ziehen (und nein, ich will nicht idHTTPClient benutzen
):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
send:tstringlist;
stream:tfilestream;
begin
stream := tfilestream.Create('
d:\foo.wmv', fmCreate);
send := tstringlist.Create;
send.Clear;
send.Add('
GET /foobar.wmv HTTP/1.0');
send.Add('
Accept: */*');
send.Add('
User-Agent: NSPlayer/4.1.0.3928');
send.Add('
Host: localhost');
send.Add('
Pragma: no-cache,rate=1.000000,stream-time=0,stream-offset=4294967295:4294967295,request-context=4,max-duration=2147548740');
send.Add('
Pragma: xPlayStrm=1');
send.Add('
Pragma: xClientGUID={5B704FE1-EFB9-49F5-A781-1DA8B8F0A23E}');
send.Add('
Pragma: stream-switch-count=4');
send.Add('
Pragma: stream-switch-entry=ffff:2:0 ffff:3:0 ffff:4:2 ffff:5:2');
i.Host := '
localhost';
i.Port := 80;
i.Connect();
i.SendCmd(send.Text);
i.ReadStream(stream, -1, true);
send.Destroy;
stream.Destroy
end;
Es handelt sich hier um das MMS-Protokoll (über HTTP). Leider erhalte ich nicht alle Daten. Ich erhalte immer nur 1.800.403 Bytes, anstatt fast 3MByte. Ausßerdem blockiert bei ca. 1,7MByte das Programm, danach kommen ein paar Daten die da aber nicht sein sollten
.
Habe ich vergessen ein Size zu setzen? Oder ist vielleicht mein Header verkehrt? Ich habe den Header mitgesnifft, als MPlayer den Stream saugte - er sollte also richtig sein.
Irgendwer eine spontane idee, was ich verkehrt gemacht habe?
MfG
Daniel