Ja polecam Tobie jednak zostać przy Synapse. Pobierać kod do Streama, na przykład tak jak poniżej,
a następnie załadować do StringList przez LoadFromStream. Jeśli program się zamraża, to skorzystaj
z wątków które masz opisane na: Wątki i powinno być ok.
//...
const
Opera_UserAgent = 'Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.10';
procedure DownloadToStream(const URL : string; const SomeStream : TStream);
const
Location_Prefix = 'Location:' + #32;
var
SynHttp : THttpSend;
I, Position : integer;
Str, DirectLink : string;
begin
SynHttp := THttpSend.Create;
try
SynHttp.UserAgent := Opera_UserAgent;
SynHttp.HTTPMethod('GET', Url);
case SynHttp.ResultCode of
301, 302 :
begin
for I := 0 to SynHttp.Headers.Count - 1 do
begin
Str := SynHttp.Headers[I];
Position := Pos(Location_Prefix, Str);
if Position > 0 then
begin
DirectLink := Copy(Str, Position + Length(Location_Prefix), MaxInt);
Break;
end;
end;
DownloadToStream(DirectLink, SomeStream);
end;
else
SynHttp.Document.SaveToStream(SomeStream);
SomeStream.Position := 0;
end;
finally
SynHttp.Free;
end;
end;