![]() |
AW: Download aus INet - fertiger Code gesucht
Zitat:
Delphi-Quellcode:
DownloadURL1.Execute;
Ach verdammt, ich wollte ja keinen fertigen Code posten. Dann mach ich's hier besser: Zitat:
![]() |
AW: Download aus INet - fertiger Code gesucht
Zitat:
|
AW: Download aus INet - fertiger Code gesucht
Google-Suche, erster Treffer:
![]() |
AW: Download aus INet - fertiger Code gesucht
Die einfachste Variante, wenn man nur eine Datei herunterlädt (läuft bei mir in sowieso in einem Thread, daher geht auch die Fortschrittsanzeige und der direkte Aufruf von ohne get an TNetHTTPClient):
Delphi-Quellcode:
Ob Du ein OnAuthEvent oder ProxySettings benötigst hängt an der jeweiligen Konfiguration, wahrscheinlich eher nein und man kommt natürlich auch ohne OnReceiveData aus).
var httpClient: TNetHTTPClient;
ms:TStream; begin httpClient:=TNetHTTPClient.create(nil); try httpClient.OnAuthEvent:=NetHTTPClientAuthEvent; httpClient.OnReceiveData:=NetHTTPClientReceiveData; httpClient.ConnectionTimeout:=60000; httpClient.ProxySettings := TProxySettings.Create(xxx,yyy); ms:=TFileStream.Create(localFileName,fmCreate or fmOpenReadWrite); try httpClient.Get('https://'+remoteFileName,ms); finally ms.Free(); end; finally httpClient.free(); end; procedure TForm.NetHTTPClientAuthEvent(const Sender: TObject; AnAuthTarget: TAuthTargetType; const ARealm, AURL: string; var AUserName, APassword: string; var AbortAuth: Boolean; var Persistence: TAuthPersistenceType); begin AUserName:=xxx; APassword:=yyy; end; procedure TForm.NetHTTPClientReceiveData(const Sender: TObject; AContentLength, AReadCount: Int64; var Abort: Boolean); begin //todo: Fortschrittsanzeige end; |
AW: Download aus INet - fertiger Code gesucht
@philipp.hofmann
Dein Code hat mir den Einstieg ermöglicht. Ich bin nun in der Lage, eine Datei herunterzuladen, eine Fortschrittsanzeige zu zeigen und einen laufenden Download abzubrechen. Vielen Dank für deine Hilfe! :thumb: |
AW: Download aus INet - fertiger Code gesucht
Guten Morgen, folgender Kode hat mir immer brav gedient, allerdings ohne Https Unterstützung.
Delphi-Quellcode:
(*
Simples Http-Get Beispiel, hier steht nur das dürftigste drinnen, sollte aber dennoch recht verständlich sein. Hierbei bleibt das Kompilat relativ schlank da alles nativ abläuft. *) // ************* Header {$IFNDEF MSWindows} {$MESSAGE ERROR 'This program/unit is made for Windows only!'} {$ENDIF MSWindows} {$IF CompilerVersion >= 23} {$DEFINE NameSpace} {$IFEND CompilerVersion} // ************* Uses uses {$IFDEF NameSpace} Winapi.Classes, Winapi.WinInet; {$ELSE NameSpace} Classes, WinInet; {$ENDIF NameSpace} // ************* Methode procedure HttpGet(const Url: string; Data: TStream); const BuffSize = 1024 * 1024; var hInter: HINTERNET; UrlHandle: HINTERNET; BytesRead: DWORD; Buffer: Pointer; begin hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if Assigned(hInter) then begin Data.Seek(0, 0); GetMem(Buffer, BuffSize); try UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(UrlHandle) then begin repeat InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead); if BytesRead > 0 then Data.WriteBuffer(Buffer^, BytesRead); until BytesRead = 0; InternetCloseHandle(UrlHandle); end; finally FreeMem(Buffer); end; InternetCloseHandle(hInter); end end; // ************* Beispiel procedure DoJob; var DataStream: TMemoryStream; begin DataStream := TMemoryStream.Create; try try HttpGet('http://download-adresse.com/Filename.ext', DataStream); if DataStream.Size > 0 then DataStream.SaveToFile('X:\Pfad\Lokal-Filename.ext'); // oder mach halt was anderes mit dem Stream... except on E: exception do ShowMessage(E.Message); end; finally DataStream.Free; end; end; |
AW: Download aus INet - fertiger Code gesucht
Guten Morgen.
Heute komme ich nicht mehr dazu, aber morgen werde ich mir den Code ansehen. Vielen Dank! :) |
AW: Download aus INet - fertiger Code gesucht
@KodeZwerg
Ich habe deinen Code ausprobiert. Ich habe ein paar einfache Test durchgeführt, und er funktioniert, wie du gesagt hast, für HTTP, aber nicht für HTTPS. So weit, so gut. Vielen Dank für den Code! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz