AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Javascript zum Download?

Ein Thema von Stewag · begonnen am 4. Okt 2023 · letzter Beitrag vom 6. Okt 2023
Antwort Antwort
Stewag

Registriert seit: 12. Jun 2008
185 Beiträge
 
Delphi 12 Athens
 
#1

AW: Javascript zum Download?

  Alt 4. Okt 2023, 19:36
Thank you Kas Ob. - Curl solved my problem!

Danke auch an Thomas! Curl einzubinden erschien mir in diesem Fall als die einfachere Lösung.
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.969 Beiträge
 
Delphi 12 Athens
 
#2

AW: Javascript zum Download?

  Alt 4. Okt 2023, 21:13
Das hat nichts mit Curl oder Indy zu tun, denn das kann der Server gar nicht mitbekommen. Der Unterschied liegt in der Anfrage. Vermutlich ist schlicht der Useragent ein anderer, der ja auch schon erwähnt wurde...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.385 Beiträge
 
Delphi 12 Athens
 
#3

AW: Javascript zum Download?

  Alt 4. Okt 2023, 22:35
Delphi-Quellcode:
uses Winapi.UrlMon;
if URLDownloadToFile(nil, 'deine URL', 'der Dateiname', 0, nil) <> S_OK then
  raise EProgrammerNotFound.Create('Peng');
Delphi-Quellcode:
uses Vcl.ExtActns;
var DownLoadURL: TDownLoadURL;
...
DownLoadURL.URL := ...;
DownLoadURL.Filename := ...;
if not DownLoadURL.Execute then
  raise EProgrammerNotFound.Create('Peng');


Aber so, wie die Fehlermeldung klingt, müssten es zwei Abfragen werden.
z.B. einmal die Seite aufrufen, auf welcher der Download verlinkt wird, das soll wohl ein Cookie bei dir speichern und dann die zweite Abfrage, inkl. des Cookie, um die Datei runterzuladen.
Aber natürlich kann diese Fehlermeldung absoluter Bullshit sein und es ist am Ende ganz einfach.

Wie mehrmals gesagt, kannst du einfach mal mit alt und neu eine Abfrage machen, schaust dir den Unterschied an und behebst Jenen.


Manche Server sperren z.B. gewisse "standard"-Dinge, wie z.B. einige Useragent-Strings,
weil andere Programme, die auch das Gleiche ausgeben, zu oft Mist gebaut wurde.

z.B. illegal automatisiert Daten abgefragt, obwohl es vielleicht nicht erlaubt war.

Außerdem gibt so manche API / Webserver gern auf, wenn man nicht den gewünschten, bzw. einen der unterstürtzen Typen angibt. (Accept)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Okt 2023 um 22:54 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Javascript zum Download?

  Alt 5. Okt 2023, 06:40
.. dies hier läd auch die csv Datei ohne Probleme:
Delphi-Quellcode:
program ssltest;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, system.Classes, idhttp, IdSSLOpenSSL;

const
  url = 'https://www.bundesbank.de/statistic-rmi/StatisticDownload?tsId=BBEX3.M.JPY.EUR.BB.AC.A02';
var
  httpClient: TIDHttp;
  ioHandler: TIdSSLIOHandlerSocketOpenSSL;
  sResponse: TStringStream;
begin
  try
    httpClient := TIdHttp.Create(nil);
    try
      ioHandler := TIdSSLIOHandlerSocketOpenSSL.Create(httpClient);
      ioHandler.SSLOptions.Method := sslvTLSv1_2;
      ioHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
      httpClient.IOHandler := ioHandler;
      sResponse := TStringStream.Create;
      try
        httpClient.Get(url, sResponse);
        case httpClient.ResponseCode of
          200: sResponse.SaveToFile('c:\tmp\bb.csv');
        end;
      finally
        sResponse.Free;
      end;
    finally
      httpClient.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Delphi 11.3

Grüße
Klaus
Klaus

Geändert von Klaus01 ( 5. Okt 2023 um 13:14 Uhr) Grund: Delphi Version ergänzt
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
669 Beiträge
 
Delphi 12 Athens
 
#5

AW: Javascript zum Download?

  Alt 5. Okt 2023, 08:02
Und noch eine Lösung mit Delphi-Bordmitteln, also ohne curl und ohne Mormot - und auch ohne Indy, was es ggf. mit https etwas leichter macht:

Delphi-Quellcode:
program getPage;

{$APPTYPE CONSOLE}

uses
  System.SysUtils, System.Net.HttpClient;

var
  myClient: THTTPClient;
  response: IHTTPResponse;
  success: boolean;
  address: string;

begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    success:=true;
    address:='https://www.bundesbank.de/statistic-rmi/StatisticDownload?tsId=BBEX3.M.JPY.EUR.BB.AC.A02';

    myClient:=THTTPClient.Create;
    try
      response:=myClient.Get(address);
    except
      writeln('Request failed');
      success:=false;
    end;

    if success and (response<>nil) then begin
      Writeln('Success. Displaying content.');
      Writeln(response.ContentAsString);
    end;
    myClient.Free;
    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
185 Beiträge
 
Delphi 12 Athens
 
#6

AW: Javascript zum Download?

  Alt 5. Okt 2023, 10:12
Danke an alle - ihr seid großartig!!!

Die Lösung von Klaus funktioniert auch unter dem älteren XE2, das ich aus Kompatibilitätsgründen zu einer älteren Komponente hierfür noch verwenden muss.

Bbommels Lösung erfordert ein neueres Delphi und läuft prima unter Delphi 11.
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Javascript zum Download?

  Alt 5. Okt 2023, 21:17
Hast Du mal die Versionen der OpenSSL Dlls geprüft, die Du beim IOHandler lädst?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  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 02:54 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