Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTTPS Get Schutzverletzung abfabgen (https://www.delphipraxis.net/194601-https-get-schutzverletzung-abfabgen.html)

ATS3788 12. Dez 2017 08:51

HTTPS Get Schutzverletzung abfabgen
 
Hallo dank eurer Hilfe bin ich in der lage HTTPS
Bilder in Chromium downzuladen.

Nur bei machen Seiten gibt es eine Schutzverletzung, wenn ich versuche das entsprechende Bild
abzuspeichern, dann stürzt das ganze Programm ab.

Ich hoffte das ich das mit einer Except Fehlerabfrage händeln kann, was aber leider nicht der Fall
ist, weil der Fehler wohl in der ssleay32.dll oder libeay32.dll geschieht, wenn ich die Bilder über das Clipboard
lade, gibt es keine Probleme, nur leider bekomme ich nicht alle Bilder in die Zwischenablage.

Hat jemand eine Idee den Fehler abzufangen?

Delphi-Quellcode:
procedure TDownloader.Execute;
var
   S : string;
   HTTPClient : TIdHTTP;
   Bmp : TBitmap;
begin

   HTTPClient := TIdHTTP.Create;
      try
   with HTTPClient do
  try
    IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

    Get(fURL,fStream );
  except ///das geht leider nicht!!!
    raise Exception.CreateFmt('Error %S<%S>%Sis not a valid path%S try another Image',[LF,fURL,LF,LF]);
  end;
     fGraficType := GetGraficType;
     if fGraficType <> gt_None then

    Bmp := SetGraphic2Bmp(fGraficType, fStream);
      fImage.Picture.Bitmap.Assign(Bmp);


    finally
   HTTPClient.Free;
   Bmp.Free;
    end;

end;

Delphi.Narium 12. Dez 2017 10:03

AW: HTTPS Get Schutzverletzung abfabgen
 
Da mich das with etwas irritiert hat und mir nicht auf Anhieb klar wurde, was jetzt da wo und wie zusammengehört, hab' ich den Quelltext mal umformatiert und Kommentare eingefügt, ventuell hilft das ja schon weiter.
Delphi-Quellcode:
procedure TDownloader.Execute;
var
   S : string;
   HTTPClient : TIdHTTP;
   Bmp : TBitmap;
begin
  HTTPClient := TIdHTTP.Create;
  try
    try
      HTTPClient.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      HTTPClient.Get(fURL,fStream );
    except ///das geht leider nicht!!!
      raise Exception.CreateFmt('Error %S<%S>%Sis not a valid path%S try another Image',[LF,fURL,LF,LF]);
    end;
    // ------------------------------------------------------------
    // Und was ist, wenn der Fehler erst irgendwo ab hier passiert?
    // ------------------------------------------------------------
    fGraficType := GetGraficType;
    // Ist das wirklich so gemeint?
    // Das Original verhält sich wohl so.
    if fGraficType <> gt_None then
    begin
      Bmp := SetGraphic2Bmp(fGraficType, fStream);
    end;
    // Gehört das nicht eher mit in die IF-Abfrage?
    // Bei fGraficType = gt_None wird trotzdem Bmp zugewiesen.
    // Soll das so sein?
    // Jedenfalls gibt es in dem Fall kein Bmp := TIrgendwas.Create(WieAuchImmer).
    // Kann man so ein (quasi nicht existentes) Bmp trotzdem per Assign irgendwie nutzen?
    fImage.Picture.Bitmap.Assign(Bmp);
  finally
    HTTPClient.Free;
    Bmp.Free;
  end;
end;

ATS3788 14. Dez 2017 05:36

AW: HTTPS Get Schutzverletzung abfabgen
 
Danke für DEine Antwort.
Ich habe mir eine Procedure geschrieben die alle Grafikformate
(JPeg, PNG und GIf in eine Bitmap umwnadelt= weil mein XE7 , in "FireDac" nur native Bitmap
kann. Und dhabe ich auch an der Stelle habe ich auch keine Probleme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 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