AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Datei aus dem Internet herunterladen - geht nicht mehr!

Datei aus dem Internet herunterladen - geht nicht mehr!

Ein Thema von NicoleWagner · begonnen am 8. Dez 2018 · letzter Beitrag vom 5. Jan 2019
Antwort Antwort
Seite 4 von 9   « Erste     234 56     Letzte » 
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.283 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#31

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 18. Dez 2018, 06:07
Poste doch mal deine URL hier rein. Irgendwas scheint da mit deiner URL faul zu sein.
Da diese ja offenbar vertraulich ist, hatte ich ja den Screenshot aus dem IE vorgeschlagen. Denn dort wären die relevanten Informationen zu sehen ohne dass wir die URL brauchen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.249 Beiträge
 
Delphi XE4 Professional
 
#32

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 18. Dez 2018, 07:09
Hallo,
Zitat:
Also findet er den Server deiner URL nicht. Das kann aber viele Gründe haben. Keine DNS Auflösung, Schreibfehler im Domainteil der URL, keine Internetverbindung
Es klappt ja angeblich nur mit dem IE nicht, Firefox oder Chrome laden die Datei runter.

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.
Heiko
  Mit Zitat antworten Zitat
Rolf Frei
Online

Registriert seit: 19. Jun 2006
131 Beiträge
 
#33

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 18. Dez 2018, 12:07
Poste doch mal deine URL hier rein. Irgendwas scheint da mit deiner URL faul zu sein.
Da diese ja offenbar vertraulich ist, hatte ich ja den Screenshot aus dem IE vorgeschlagen. Denn dort wären die relevanten Informationen zu sehen ohne dass wir die URL brauchen.
Dann soll sie halt den Pfadteil der URL löschen oder ändern. Kommt dann halt eine 404, respektive ein Dowload einer 404 HTML-Seite, aber das Probem liegt ja anscheinend nicht darin sondern im Serverteil der URL. Also http://server/irgendwas...

NicoleWagner, hast du schon mal die IP anstelle des Domainnamen versucht. Also anstatt zum Beispiel www.microsoft.com eben http://52.164.206.56/<Rest der URL>. So könntest du schon mal ausschliessen, dass es ein DNS Problem ist.

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.

Geändert von Rolf Frei (18. Dez 2018 um 12:23 Uhr)
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
54 Beiträge
 
Delphi XE3 Professional
 
#34

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 10:25
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!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.283 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#35

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 11:15
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
Wenn ich eine Downloadadresse einfach eingebe und Enter drücke, sieht es bei mir so aus:

2018-12-20.jpg
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Rolf Frei
Online

Registriert seit: 19. Jun 2006
131 Beiträge
 
#36

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 12:40
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.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
1.090 Beiträge
 
#37

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 12:54
Zitat:
Ja. Leider hatte ich Probleme, welche Delphi Version hast Du denn?
Delphi 10.3. Es lief auch mit 10.2.
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.
  Mit Zitat antworten Zitat
Rolf Frei
Online

Registriert seit: 19. Jun 2006
131 Beiträge
 
#38

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 16:00
Zitat:
Ja. Leider hatte ich Probleme, welche Delphi Version hast Du denn?
Delphi 10.3. Es lief auch mit 10.2.
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.
Habe das eben mal in XE3 getestet und da lässt sich das anstandslos ohne Fehler kompilieren. Solange man nicht Indy 9 nutzt, geht das problemlos. Und Indy 10 war bei XE3 auch schon standartmässig dabei.

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.

Geändert von Rolf Frei (20. Dez 2018 um 16:06 Uhr)
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
54 Beiträge
 
Delphi XE3 Professional
 
#39

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 16:39
@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?
  Mit Zitat antworten Zitat
hoika
Online

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.249 Beiträge
 
Delphi XE4 Professional
 
#40

AW: Datei aus dem Internet herunterladen - geht nicht mehr!

  Alt 20. Dez 2018, 16:44
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.

(https://www.delphipraxis.net/114945-...tsupdates.html)
Heiko
  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 14:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf