Delphi Indy HTTPS 检测来自网络服务器的最新文件

Delphi Indy HTTPS detect the newest file from a web server

尝试检测添加到 Web 服务器的最新文件的名称的正确方法是什么?我正在尝试使用 Indy 下载文件 HTTPS.The 文件名是动态生成的,因此我首先需要确定服务器上存在的最新文件的名称。

我使用以下代码从网络服务器下载文件:

function getIndyFile_from_https(const fileURL, FileName: String): boolean;
var http:TIdHttp;
    s:TFileStream;
    i:integer;
    FProgress: Integer;
    FBytesToTransfer: Int64;
    FOnChange: TNotifyEvent;
    IOHndl: TIdSSLIOHandlerSocketOpenSSL;
    protocol_url,fullurl,url_fara_protocol,host:string;

begin
http:=TIdHTTP.Create(nil);
IOHndl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
http.Request.BasicAuthentication := True;
  //Request.Accept:='text/html,*/*';
  //Request.AcceptEncoding:='utf-8';
http.HandleRedirects := True;
http.IOHandler := IOHndl;
http.ReadTimeout := 30000;
//http.OnWork := HTTPWork;
//http.OnWorkBegin := HTTPWorkBegin;
//http.OnWorkEnd := HTTPWorkEnd;

  try
    s:=TFileStream.Create(filename, fmcreate);
    try
      http.Get(fileUrl,s);
      result:=true;
    finally
      s.free;
    end;
  finally
    http.Free;
  end;
end;

没有检索文件列表的标准 HTTP 命令。

一些特定的服务器安装可能 return 给定路径/目录 URL 的文件列表,但是您需要以编程方式解析 HTTP 响应。

您需要服务器端逻辑来处理这个问题。为了响应您的客户端可以请求的给定静态 URL,服务器需要:

  1. 跟踪最新文件和 return 文件名,如果不是文件本身的话。

  2. 提供描述所有可用文件及其时间戳的目录列表。然后您可以解析列表并请求最新文件。