![]() |
Download einer Datei in App
Hallo!
Eigentlich ganz schön, noch einmal etwas Neues zu beginnen, aber manchmal macht mich das wahnsinnig, dass kaum `was funzzt, was bei PC-Anwendungen seit fast dreißig Jahren funzzt. Ich will in meiner Android-App eine Datei herunterladen und habe es zunächst ganz einfach probiert:
Delphi-Quellcode:
Ergebnis ist eine Fehlermeldung:
procedure Herunterladen(Quelle, Ziel: string);
var Stream: TMemoryStream; begin Stream := TMemoryStream.Create; try FMain.IdHTTP1.Get(Quelle, Stream); Stream.SaveToFile(Ziel); finally Stream.Free; FMain.IdHTTP1.Free; end; end; Im Projekt Name.apk ist eine Exception der Klasse EIdOSSLCouldNotLoadSSLLibrary mit der Meldung 'SSL.-Bibliothek konnte nicht geladen werden.' aufgetreten. Also habe ich aufgerüstet. Alles, was nicht schnell genug auf den Bäumen war, in die Uses gefercht:
Delphi-Quellcode:
Über "Bereitstellung" unter "Projekt" die Dateien libcrypto.so.1.1 und libssl.so.1.1 eingebunden.
System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdSSLOpenSSL, IdSSLOpenSSLHeaders, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL; Und die Routine wie folgt erweitert:
Delphi-Quellcode:
Trauriges Ergebnis ist dieselbe Fehlermeldung.
procedure Herunterladen(Quelle, Ziel: string);
var Stream: TMemoryStream; HTTP: TIdHTTP; SSLHandler: TIdSSLIOHandlerSocketOpenSSL; begin Stream := TMemoryStream.Create; HTTP := TIdHTTP.Create(nil); SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try SSLHandler.SSLOptions.Method := sslvTLSv1_2; SSLHandler.SSLOptions.Mode := sslmUnassigned; HTTP.IOHandler := SSLHandler; HTTP.Get(Quelle, Stream); Stream.SaveToFile(Ziel); finally Stream.Free; SSLHandler.Free; HTTP.Free; end; end; Wie bekomme ich die dlls eingebunden? |
AW: Download einer Datei in App
Hi,
ich glaube nicht das Indy diese Libs nimmt. Zumal das 1.1 ist und nicht 1.0. Sollte Indy die System Libs nehmen klappt es 1000pro nicht. Das kann Indy nicht. Zu neu... Selbst wenn Indy diese 1.0 Libs nehmen würde, kann es zu 90% sein sein das es trotzdem nicht klappt. Es gibt kaum noch Server die damit Arbeiten. Fast überlesen: DLLs kannst du auf dem System nicht nutzen. |
AW: Download einer Datei in App
Da wurde ".dll" wohl nur als Synonym verwendet.
Geschrieben wurde weiter .so, das wird für Android wahrscheinlich das richtige sein (kenne mich mit Android nicht aus). |
AW: Download einer Datei in App
Ich habe Indy mit SSL auf Android auch nie hinbekommen.
Schau dir mal TNetHTTPClient an. Läuft hier unter Android und IOS problemlos. |
AW: Download einer Datei in App
Zitat:
|
AW: Download einer Datei in App
Oder er soll Synapse nehmen. Das müsste auch auf Handy laufen. Zumal das OpenSSL 3.x kann.
|
AW: Download einer Datei in App
Zitat:
|
AW: Download einer Datei in App
Junge, Junge - und ich versaue mir den Sonntag mit TIdSSLIOHandlerSocketOpenSSL.
Ich danke herzlich für den Hinweis auf TNetHTTPClient - damit läuft es. |
AW: Download einer Datei in App
Zitat:
|
AW: Download einer Datei in App
Zitat:
Eine kleine Anschlussfrage sei erlaubt. Bekomme ich das Folgende auch mit einer TNetHTTPClient-Komponente hin? NetHTTPClient1.get... ist jedenfalls kein Weg. Doch. muss ContentAsString anhängen.
Delphi-Quellcode:
Memo1.Text := IdHttp1.Get('http://www.webseite.de');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 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 by Thomas Breitkreuz