建議您使用Delphi自帶的Indy組件中的TIdHTTP組件來下載文件。代碼範例如下:
uses IdHTTP;
procedure TYourClass.Someprocedure(const FURL, LocalFileName: string);
var
http: TIdHTTP;
MemStream: TFileStream;
Options: TIdHTTPOptions;
begin
http := TIdHTTP.Create;//創建TIdHTTP組件。
try
MemStream := TFileStream.Create(LocalFileName, fmCreate);//創建本地文件流對象。
try
http.ConnectTimeout := 30000;//設置http連接超時時間。這裡可以按照您的需求自己設定。
http.ReadTimeout := 120000;//設置讀取http超時時間。
http.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)';//仿造IE進行下載。
http.HandleRedirects := True;//允許服務器發送跳轉Response后,IdHTTP自動下載新地址。
if hoForceEncodeParams in http.HTTPOptions then//這個代碼是取消IdHTTP自己對URL的編碼功能,因爲FURL可能傳入已經編碼過的URL地址。如果您的FURL參數中,傳入的字符串未做URLEncode的話,這個If和一下的begin end之間的代碼可以註釋掉。
begin
Options := http.HTTPOptions;
Exclude(Options, hoForceEncodeParams);
http.HTTPOptions := Options;
end;
try
http.Get(FURL, MemStream);//執行下載。
except
//加入您的異常處理代碼
end;
finally
MemStream.Free;
end;
finally
http.Free;
end;
end;
上述代碼在XP Pro SP2,Delphi7,Indy10(2006年9月9日的Snapshot版本)中測試通過。