【问题标题】:Delphi Indy HTTPS detect the newest file from a web serverDelphi Indy HTTPS 检测来自 Web 服务器的最新文件
【发布时间】:2016-12-28 15:50:17
【问题描述】:

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

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

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 delphi https indy


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您确认我的假设。
    【解决方案2】:

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

    1. 跟踪最新文件并返回该文件名,如果不是文件本身。

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

    【讨论】:

    • 感谢您确认我的假设。
    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 2017-02-15
    • 2012-10-29
    • 1970-01-01
    • 2014-10-18
    • 2016-07-02
    • 2017-05-21
    • 2012-11-14
    相关资源
    最近更新 更多