【问题标题】:tdownload using Delphi XE2使用 Delphi XE2 下载
【发布时间】:2017-08-10 13:41:06
【问题描述】:

希望获得有关 TDownloadURL 的帮助 使用此代码保存下载的文件。使用德尔福 XE2。想将下载保存到内存/tstringlist 而不是文件。如何在不添加组件的情况下做到这一点?谢谢!

notfound:=false;
dl := TDownloadURL.Create(self);
  try
    dl.URL := url;
    dl.FileName := execpath+'apic1.csv'; dl.ExecuteTarget(nil); dl.Free;
  except
    dl.Free;
    notfound:=true;
  end;

【问题讨论】:

  • 这段代码非常古怪,它处理异常和生命周期的方式。如果您不想使用此组件,也许您可​​以决定允许使用哪些代码。既然知道了,为什么不自己写呢?
  • 那么不要使用TDownloadURL。没有它,有许多合适的方法可以从 URL 中检索内容。例如,TIdHTTP 加入 Delphi 已有十多年了。

标签: delphi download delphi-xe2


【解决方案1】:

来自ExtActns 的TDownLoadURL 单元除了下载到文件之外什么也做不了。它的ExecuteTarget 方法就是这样实现的。如果我是你,我会使用 Indy。很简单:

uses
  IdHTTP;

var
  Client: TIdHTTP;
  Stream: TStream;
begin
  Client := TIdHTTP.Create;
  try
    Stream := TMemoryStream.Create;
    try
      Client.Get(URL, Stream);
      { ← process Stream somehow }
    finally
      Stream.Free;
    end;
  finally
    Client.Free;
  end;
end;

【讨论】:

  • 谢谢。逐字运行此代码,在处理此语句时出现错误“IOHandler is not valid”:Client.Get(URL, Stream); ... URL 是一个有效的 URL ... 对解决方案的想法?
  • 你的目标是 HTTPS 吗?
  • 谢谢...这两个都会引发错误:url:='geocoding.geo.census.gov/geocoder/locations/…'; url:= 'tools.usps.com/go/…';
  • 然后关注this post,只是不要忘记那里提到的最后一步(获取OpenSSL库)。
  • 谢谢。使用该代码,在使用 USPS url 时,跟随 sn-p 会返回良好的“SRC”值,但会引发人口普查 url 异常。看不出为什么。尝试 IdHTTP1.IOHandler:=LHandler; Src:= IdHTTP1.Get('geocoding.geo.census.gov/geocoder/locations/…); // 'tools.usps.com/go/…);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多