AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Download aus INet - fertiger Code gesucht

Download aus INet - fertiger Code gesucht

Ein Thema von Guido Eisenbeis · begonnen am 3. Jan 2020 · letzter Beitrag vom 10. Jan 2020
Antwort Antwort
Seite 2 von 2     12
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
880 Beiträge
 
Delphi 2009 Professional
 
#11

AW: Download aus INet - fertiger Code gesucht

  Alt 4. Jan 2020, 18:01
Leider ist es mir nicht gelungen, Delphi-Code zu finden, der auch nur eine einzige Datei (ca. 5 MB) downloaded. Das Meiste ist aus den frühen 2000ern! Die Codes sind entweder nicht zum Laufen zu bringen (lassen sich nicht kompilieren, weil alles veraltet ist), oder sie laden von den 5 MB nur 40 KB runter. Aktuelle Codes scheint es nicht zu geben.
TDownloadURL gibt es beispielsweise seit ich mich erinnern kann, und der komplette Code sieht seit eher so aus:
DownloadURL1.Execute;
Ach verdammt, ich wollte ja keinen fertigen Code posten.

Dann mach ich's hier besser:
Hast du ein Code Beispiel für TNetHTTPClient?
Delphi-Referenz durchsuchenSystem.Net.HttpClientComponent.TNetHTTPClient.Get
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Download aus INet - fertiger Code gesucht

  Alt 4. Jan 2020, 18:37
TDownloadURL gibt es beispielsweise seit ich mich erinnern kann, ...
Das ist scheinbar das Problem, denn in Delphi 10.3 finde ich die Componente nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

AW: Download aus INet - fertiger Code gesucht

  Alt 4. Jan 2020, 19:40
Google-Suche, erster Treffer: http://docs.embarcadero.com/products...wnLoadURL.html
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
640 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Download aus INet - fertiger Code gesucht

  Alt 4. Jan 2020, 21:44
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:
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;
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).
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Download aus INet - fertiger Code gesucht

  Alt 5. Jan 2020, 02:31
@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!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.251 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Download aus INet - fertiger Code gesucht

  Alt 7. Jan 2020, 07:10
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;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Download aus INet - fertiger Code gesucht

  Alt 7. Jan 2020, 07:23
Guten Morgen.

Heute komme ich nicht mehr dazu, aber morgen werde ich mir den Code ansehen. Vielen Dank!
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Download aus INet - fertiger Code gesucht

  Alt 10. Jan 2020, 15:39
@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!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf