Похоже, что http://liga -updates.ua.tc основан на 404 ошибках перенаправления на пользовательские страницы (используются внутренне веб-сервером).
Попробуйте сделать httphead
на любом ресурсе: он вернет 404 с ответом HTML.этот ответ содержит элемент iframe
с src
для реального загружаемого файла.основываясь на этом, я написал небольшой код.
Я использовал THttpCli
, поскольку кажется, что TIdHttp не вернет «действительный» ответ со статусом 404 (в любом случае, не в моей версии D5).
uses HttpProt;
procedure TForm1.Button1Click(Sender: TObject);
const
IFRAME_SRC = '<iframe src="';
var
HttpCli: THttpCli;
S, URL, FileName: string;
I: Integer;
FS: TFileStream;
begin
URL := 'http://liga-updates.ua.tc/GDI+.zip';
HttpCli := THttpCli.Create(nil);
try
HttpCli.URL := URL;
HttpCli.MultiThreaded := True;
try
HttpCli.Get;
except
// this will always be 404 for this domain (test from outside the IDE)
end;
S := HttpCli.LastResponse; // THttpCli returns valid response when status 404
// extract IFRAME src
I := Pos(IFRAME_SRC, S);
if I <> 0 then
begin
Delete(S, 1, I + Length(IFRAME_SRC) - 1);
URL := Copy(S, 1, Pos('"', S) - 1);
HttpCli.URL := URL;
FileName := ExtractFileName(StringReplace(URL, '/', '\', [rfReplaceAll]));
FS := TFileStream.Create(FileName, fmCreate);
try
HttpCli.RcvdStream := FS;
try
HttpCli.Get;
ShowMessage('Downaloded OK');
except
ShowMessage('Unable to download file.');
end;
finally
FS.Free;
end;
end
else
ShowMessage('Unable to extract download information.');
finally
HttpCli.Free;
end;
end;