![]() |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Zitat:
|
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Hallo,
Zitat:
Ich würde auf jeden Fall mal einen anderen Rechner ausprobieren, um sicherzustellen, das nicht im IE ein falscher Proxy eingestellt ist. Aber: Es wurde ja angeblich nichts geändert. |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Zitat:
![]() NicoleWagner, hast du schon mal die IP anstelle des Domainnamen versucht. Also anstatt zum Beispiel ![]() Ah ja und hast du eigentlich nun die Unit von DieDolly getestet (1. Seite)? Das läuft über die Indy Komponenten. Du brauchst da aber noch die OpenSSL DLL's wenn dein Link über Https läuft. Ich hätte das schon immer so gemacht und nicht auf einer Funktion des IE aufgebaut. Kann mir sehr gut vorstellen, dass diese IE Funktion mit einem Security-Patch daktiviert oder behindert wurde. Und deaktiviere bitte mal die Windows Firewall auf dem PC von dem aus du das machst. Vermute immernoch stark, dass die deine EXE, die den Aufruf macht, blockiert. |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Danke für die vielen sehr, sehr guten Vorschläge. Leider half noch keiner, doch solange Ihr nicht aufgebt, ich tue es nicht.
Das sind die Ergebnisse der Versuche: an Dolly und unit: Ja. Leider hatte ich Probleme, welche Delphi Version hast Du denn? Details zu Problemen siehe Posting 19 as IE und Fehlerausgabe: Ich habe F12 probiert, doch da kommt nichts Verwertbares (ala "ein Fehler ist da") Screenshot der Fehlermeldungen wollte ich also tun, doch komme zumindest mit F12 und LastError nicht weiter. Ich könnte mir vorstellen, dass der IE Fehlerausgabe schlecht funktioniert auf "nicht-seiten", also Seiten die nur den Download starten, aber nicht angezeigt werden ad Neuregistireren der dll lt. MS Ich habe es probiert, konnte jedoch die regsvr32 Initpki.dll nicht registieren, die anderen drei dlls schon (Anmerkung: es ist ein Desktop PC) Leider half es nicht. Domain durch IP Adresse ersetzen probiert, leider klappt das auch nicht. Danke, allen, die noch weitertüfteln! |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 50481 |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
NicoleWagner vergiss mal GetLatest das hilft dir hier nichts. Das geht nicht mit dieser Funktion. Der HResult Code der Funktion liefert dir ja den Grund, wieso es nicht klappt. Du hast ja den Fehlercode 800C0005 schon bekommen und der sagt ganz klar, dass der Server deiner URL nicht gefunden wird. Das kann folgende Gründe haben und welcher davon nun zutrifft musst du nun feststellen:
- Den Server gibt es nicht mehr. - Der DNS kann den Serverteil der URL nicht in eine IP auflösen. - Eine Firewall blockiert den Netzwerkverkehr für deine Anwendung. (Hast du die Windows Firewall mal deaktiviert?) Was Anderes kann es eigentlich nicht mehr sein. Also überprüfe diese Punkte und zwar jeweils vom PC aus auf dem dein Programm läuft! Poste bitte mal deine URL hierein. Der Teil nach dem Server kannst du gerne weglassen oder veränderst ihn, wenn der so geheim ist. |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Zitat:
XE 3 ist vielleicht einfach zu alt. Wenn du nicht mehr als 5000 USD oder EUR, keine Ahnung, pro Jahr verdienst kannst du auch Delphi CE 10.3 runterladen. Das ist quasi eine Pro-Version. |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Zitat:
Ich habe einfach rasch eine neue VCL Anwendung erstellt und da in der Form1 im OnCreate den Aufruf platziert. Die Klassendefinition der Downloadkomponente habe ich auch einfach zum Testen direkt in der Unit1 platziert. Was aber noch fehlt sind die OPENSSL DLL's. Ohne die geht kein HTTPS.
Code:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses IdComponent, IdHTTP, IdSSLOpenSSL; type THTTPFileDownload = class(TIdHTTP) private FProgress: Integer; FWorkCount, FBytesTransfered, FBytesToTransfer, FBytesTransferedEnd: Int64; FOnChange, FOnEnd: TNotifyEvent; IOHndl: TIdSSLIOHandlerSocketOpenSSL; procedure ResetVars; procedure HTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); procedure HTTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); procedure HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode); procedure SetProgress(const Value: Integer); procedure SetOnChange(const Value: TNotifyEvent); procedure SetOnEnd(const Value: TNotifyEvent); public constructor Create(AOwner: TComponent); destructor Destroy; override; function DownloadFile(const aFileUrl: string; const aDestinationFile: string): Boolean; property Progress: Integer read FProgress write SetProgress; property WorkCount: Int64 read FWorkCount write FWorkCount; property BytesTransfered: Int64 read FBytesTransfered write FBytesTransfered; property BytesTransferedEnd: Int64 read FBytesTransferedEnd write FBytesTransferedEnd; property BytesToTransfer: Int64 read FBytesToTransfer; property OnChange: TNotifyEvent read FOnChange write SetOnChange; property OnEnd: TNotifyEvent read FOnEnd write SetOnEnd; end; constructor THTTPFileDownload.Create(AOwner: TComponent); begin inherited; IOHndl := TIdSSLIOHandlerSocketOpenSSL.Create(nil); Request.BasicAuthentication := True; HandleRedirects := True; IOHandler := IOHndl; ReadTimeout := 3000; ConnectTimeout := 3000; IOHndl.ReadTimeout := 3000; IOHndl.ConnectTimeout := 3000; OnWork := HTTPWork; OnWorkBegin := HTTPWorkBegin; OnWorkEnd := HTTPWorkEnd; end; destructor THTTPFileDownload.Destroy; begin IOHndl.Free; inherited; end; procedure THTTPFileDownload.ResetVars; begin Progress := 0; FWorkCount := 0; FBytesToTransfer := 0; FBytesTransfered := 0; end; function THTTPFileDownload.DownloadFile(const aFileUrl: string; const aDestinationFile: string): Boolean; var LDestStream: TFileStream; aPath: string; begin try ResetVars; aPath := ExtractFilePath(aDestinationFile); if aPath <> '' then ForceDirectories(aPath); LDestStream := TFileStream.Create(aDestinationFile, fmCreate); try Get(aFileUrl, LDestStream); Result := True; finally FreeAndNil(LDestStream); end; except Result := False; end; end; procedure THTTPFileDownload.HTTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); begin if BytesToTransfer = 0 then // No Update File Exit; WorkCount := AWorkCount; Progress := Round((AWorkCount / BytesToTransfer) * 100); BytesTransfered := (BytesToTransfer div 100) * Progress; end; procedure THTTPFileDownload.HTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64); begin FBytesToTransfer := AWorkCountMax; end; procedure THTTPFileDownload.HTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode); begin FBytesTransferedEnd := FBytesTransfered; if Assigned(FOnEnd) then FOnEnd(Self); FWorkCount := 0; FBytesToTransfer := 0; ResetVars; Progress := 100; end; procedure THTTPFileDownload.SetOnChange(const Value: TNotifyEvent); begin FOnChange := Value; end; procedure THTTPFileDownload.SetOnEnd(const Value: TNotifyEvent); begin FOnEnd := Value; end; procedure THTTPFileDownload.SetProgress(const Value: Integer); begin FProgress := Value; if Assigned(FOnChange) then FOnChange(Self); end; //----------------------- procedure TForm1.FormCreate(Sender: TObject); var DL: THTTPFileDownload; begin DL := THTTPFileDownload.Create(nil); try DL.DownloadFile('http:\\www.meinwebserver.com\test\test.zip', 'C:\Temp\test.txt'); finally DL.Free; end; end; end. |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
@jaenicke: Und wenn das Download Link 'gebrochen' ist? bzw. der Downlaod NICHT glatt läuft?
@Rolf: Firewall deaktivieren half nicht. Den Server und die Datei gibt es sicher noch, weil Firefox die Datei vom Host her holen kann. Dem Domainnamen durch die IP-Nr ersetzen habe ich schon probiert. Sorry, die url kann ich nicht posten. Sie ist auf eine vertrauliche Datei. @DieDollie: So lieben Dank für die Arbeit, die Du Dir gemacht hast! Ich glaube, hier ist eine heiße Spur. Ich erstellte ein neues Projekt und sah diese Fehlermeldung: "Im Projet_Download_Url.exe ist eine Exception der Klasse EIOSSLCouldNotLoadSSLibrary mit der Meldung SSL-Bibliothek konnte nicht geladen werden' aufgetreten." Die Gretchenfrage ist jetzt: Wie und was muss ich laden? |
AW: Datei aus dem Internet herunterladen - geht nicht mehr!
Hallo,
es fehlen die OpenSSL-DLLs (libeay32.dll, ssleay32.dll), am besten erst mal in das Programmverzeichnis kopieren. Den Link findest Du über "Suchen", war gestern oder vorgestern gerade was hier. ( ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 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