http://liga-updates.ua.tcは、カスタム ページ (Web サーバーによって内部的に使用される) への 404 エラー リダイレクトに基づいているようです。
そこにある任意のリソースでhttp を実行してみてくださいhead
。HTML 応答で 404 が返されます。その応答には、実際のダウンロード ファイルに対する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;