2017-08-10 124 views
-2

希望獲得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的一部分,已有十多年的歷史。 –

回答

7

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