使用Delphi XE2下载tdownload

问题描述:

希望获得TDownloadURL帮助 使用此代码可保存下载的文件。使用Delphi XE2。要保存下载到内存/ tstringlist不是文件。如何在不添加组件的情况下执行此操谢谢!使用Delphi XE2下载tdownload

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; 
+0

这段代码非常古雅,它处理异常和生命周期的方式。如果你不想使用这个组件,也许你可以决定你允许使用哪些代码。一旦你知道了,为什么不自己写呢? –

+1

然后不要使用TDownloadURL。有很多合适的方法可以在没有它的情况下从URL中检索内容。比如,TIdHTTP就是Delphi的一部分,已有十多年的历史。 –

TDownLoadURLExtActns单元不能做任何事情比下载到文件等等。这是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; 
+0

谢谢。在逐字运行此代码时,处理此语句时出现错误“IOHandler无效”:Client.Get(URL,Stream); ... URL是一个有效的URL ...对解决方案的想法? – kualoa

+0

你的目标是HTTPS吗? – Victoria

+0

谢谢......这些都会引发错误: url:='https://geocoding.geo.census.gov/geocoder/locations/onelineaddress?address = 4600 + Silver + Hill + Rd%2C + Suitland%2C + MD + 20746&基准= 9&格式= JSON'; url:='https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=0&companyName=&address1=1600+PENNSYLVANIA+AVE+NW&address2=&city=&state=Select&urbanCode=&postalCode=&zip=20500'; – kualoa