AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Datei mittels TRestHttp herunterladen + Events
Thema durchsuchen
Ansicht
Themen-Optionen

Datei mittels TRestHttp herunterladen + Events

Ein Thema von DieDolly · begonnen am 10. Apr 2022 · letzter Beitrag vom 12. Apr 2022
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Datei mittels TRestHttp herunterladen + Events

  Alt 10. Apr 2022, 15:52
Nachdem ich heute alles von TIdHTTP zu TRESTHTTP umgeschrieben habe und wieder Kontakt zu meinem Server habe, steht eine nächste Sache an.
Ich lade Dateien mit den Indys runter und nutze dafür HTTPWorkBegin, HTTPWork und HTTPWorkEnd. Der Dateidownload selber sieht so aus
Delphi-Quellcode:
constructor THTTPFileDownload.Create(AOwner: TComponent);
begin
 inherited;

 FIOHndl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
 FIOHndl.SSLOptions.SSLVersions := [sslvTLSv1_2];

 IOHandler := FIOHndl;

 OnWork := HTTPWork;
 OnWorkBegin := HTTPWorkBegin;
 OnWorkEnd := HTTPWorkEnd;
end;

function THTTPFileDownload.DownloadFile(const aFileUrl: string; const aDestinationFile: string): Boolean;
var
 LDestStream: TFileStream;
 aPath: string;
begin
 try
  aPath := ExtractFilePath(aDestinationFile);

  if aPath <> 'then
   ForceDirectories(aPath);

  LDestStream := TFileStream.Create(aDestinationFile, fmCreate);
  try
   Get(aFileUrl, LDestStream);

   Result := ResponseCode = 200;
  finally
   FreeAndNil(LDestStream);
  end;
 except
  Result := False;
 end;
end;
Ich denke mit REST.HttpClient sollte das zu 99% gleich sein. Aber wie bekomme ich das mit den Events HTTPWorkBegin, HTTPWork und HTTPWorkEnd hin?
Noch ganz weg von Indy bin ich aber danach auch noch nicht. Ich sende aus meinem Programm heraus E-Mails via SMTP. Das kann Rest vermutlich überhaupt nicht, oder?

Geändert von DieDolly (10. Apr 2022 um 15:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.445 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datei mittels TRestHttp herunterladen + Events

  Alt 10. Apr 2022, 16:19
Ich denke mit REST.HttpClient sollte das zu 99% gleich sein. Aber wie bekomme ich das mit den Events HTTPWorkBegin, HTTPWork und HTTPWorkEnd hin?
Dieses Konzept haben die REST-Komponenten nicht. Wofür verwendest du denn diese Events?

Ich sende aus meinem Programm heraus E-Mails via SMTP. Das kann Rest vermutlich überhaupt nicht, oder?
Nein, das ist rein HTTP(S). SMTP ist ein völlig anderer Bereich.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Datei mittels TRestHttp herunterladen + Events

  Alt 10. Apr 2022, 16:24
Die Events habe ich mit den Indies drin gehabt, um den Downloadfortschritt anzuzeigen. Ein Programmupdate ist i.d.R zwischen 15 und 30 MB groß.
Wäre eine Fortschrittsanzeige (Prozent, keine ProgressBar) aus Sicht der Nutzerfreundlichkeit hier vernachlässigbar?
Falls ja, lasse ich das einfach weg.

Ist eine gewisse Aufgabe in meinem Programm erledigt, kann man sich via SMTP einen Report zusenden lassen.
Da ich keine Datenerhebung in meinem Programm habe, auch keine anonyme, weiß ich nicht, wieviele Nutzer diesen Programmteil überhaupt nutzen.
Vielleicht ist diese Praktik ja schon veraltet und kann schon alleine deswegen raus.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.445 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datei mittels TRestHttp herunterladen + Events

  Alt 10. Apr 2022, 17:49
Die Events habe ich mit den Indies drin gehabt, um den Downloadfortschritt anzuzeigen. Ein Programmupdate ist i.d.R zwischen 15 und 30 MB groß.
Wäre eine Fortschrittsanzeige (Prozent, keine ProgressBar) aus Sicht der Nutzerfreundlichkeit hier vernachlässigbar?
Falls es eine VCL-Anwendung ist, böte sich auch TDownLoadURL (Vcl.ExtActns.pas) an. Dort gibt es einen OnDownloadprogress-Event.

Ist eine gewisse Aufgabe in meinem Programm erledigt, kann man sich via SMTP einen Report zusenden lassen.
Dafür käme vielleicht TSendMail (ebenfalls Vcl.ExtActns.pas) in Frage. Das verwendet allerdings MAPI.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Datei mittels TRestHttp herunterladen + Events

  Alt 10. Apr 2022, 17:57
MAPI habe ich eben geprüft, bei mir jedenfalls nicht verfügbar, vermutlich weil ich Thunderbird Portable nutze.
Ich denke das mit SMTP lasse ich einfach weg. Kommt mir auch veraltet vor.
Hauptsache ich bin die OpenSSL-DLLs los.

Den OnDownloadProgress-Event brauche ich auch nicht zwingend. Bei maximal 30 MB ist das unnötig.
Um bei REST zu bleiben, mache ich das vielleicht mit REST.Client.TDownloadURL.

Warum ich aber von Indy komplett weg will, sollte hier ersichtlich sein:
https://github.com/IndySockets/Indy/pull/299

> Pull request vom 29 Apr 2020
> dann vor 6 Tagen: "What is the status of this Pull request?" >> "It is still pending review".

Geändert von DieDolly (10. Apr 2022 um 18:36 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.938 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datei mittels TRestHttp herunterladen + Events

  Alt 12. Apr 2022, 19:53
Nur konsumieren wollen führt halt nicht dazu, dass solche Open Source Projekte Fortschritt machen...
...das war jetzt nicht persönlich gemeint, aber mehr Entwickler in solchen Projekten wäre schon hilfreich!
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz