![]() |
Probleme mit HTTP.Get
Hallo ich veruche Images mit Chromium down zu loaden wie in dem Post beschrieben
![]()
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtDlgs, IdHTTP, cefvcl, ceflib; const MENU_ID_SAVE_IMAGE_AS = Ord(MENU_ID_USER_FIRST) + 1; type TDownloader = class(TThread) private FURL: string; FFileName: string; protected procedure Execute; override; public constructor Create(const URL, FileName: string); reintroduce; end; type TForm1 = class(TForm) Button1: TButton; Chromium1: TChromium; SavePictureDialog1: TSavePictureDialog; procedure FormCreate(Sender: TObject); procedure Chromium1BeforeContextMenu(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel); procedure Chromium1ContextMenuCommand(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; commandId: Integer; eventFlags: TCefEventFlags; out Result: Boolean); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TDownloader } constructor TDownloader.Create(const URL, FileName: string); begin inherited Create(False); FreeOnTerminate := True; FURL := URL; FFileName := FileName; end; procedure TDownloader.Execute; var HTTPClient: TIdHTTP; FileStream: TFileStream; begin try HTTPClient := TIdHTTP.Create; try FileStream := TFileStream.Create(FFileName, fmCreate); try HTTPClient.Get(FURL, FileStream); finally FileStream.Free; end; finally HTTPClient.Free; end; except // error handling ignored for this example end; end; { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin Chromium1.Load('http://www.google.com/'); end; procedure TForm1.Chromium1BeforeContextMenu(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel); begin if (CM_TYPEFLAG_MEDIA in params.TypeFlags) and (params.MediaType = CM_MEDIATYPE_IMAGE) then model.AddItem(MENU_ID_SAVE_IMAGE_AS, 'Save image as...'); end; procedure TForm1.Chromium1ContextMenuCommand(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; commandId: Integer; eventFlags: TCefEventFlags; out Result: Boolean); var SaveDialog: TSavePictureDialog; begin if (commandId = MENU_ID_SAVE_IMAGE_AS) then begin SaveDialog := TSavePictureDialog.Create(nil); try // SaveDialog.FileName := <here you can extract file name from params.SourceUrl>; // SaveDialog.DefaultExt := <here you can extract file ext from params.SourceUrl>; if SaveDialog.Execute then TDownloader.Create(params.SourceUrl, SaveDialog.FileName); finally SaveDialog.Free; end; end; end; end. Nur bei den meißten Bilder bekomme ich Schutzverletzungen
Delphi-Quellcode:
Mit einem normalen Browser kann ich ohne Probleme das entsprechende ImageHTTPClient.Get(FURL, FileStream); speichern. Das Bild, der Link ist also in Ordnung. Hat dazu jemand eine Idee |
AW: Probleme mit HTTP.Get
Vieleicht
Delphi-Quellcode:
?
HTTPClient.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0';
|
AW: Probleme mit HTTP.Get
Hast du die OpenSSL-DLLs dazugetan?
Das kommt nämlich als erstes erste Exception, sobald von Bilder von https-Seiten runterladen will. Mit Schutzverletzungen hat das wenig zu tun. |
AW: Probleme mit HTTP.Get
Danke muss ich mal schauen.
So ist es nicht so elegant geht aber auch In das Clipboard und dann in den Image Container
Delphi-Quellcode:
procedure TCDDBCoverBrowserForm.ChromiumContextMenuCommand(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; commandId: Integer; eventFlags: Cardinal; out Result: Boolean); begin Result := False; frame.Copy; |
AW: Probleme mit HTTP.Get
Liste der Anhänge anzeigen (Anzahl: 1)
Was meinst Du mit OpenSSL-DLLs?
Ich habe alle Dlls von Chromium in das Exe Folder kopiert. Siehe Anhang |
AW: Probleme mit HTTP.Get
Zitat:
![]() |
AW: Probleme mit HTTP.Get
Zitat:
Ohne die wird doch sofort eine entsprechende Meldung geworfen vom Indy-Framework, sobald du von einer https-Adresse ein Bild runterlädst. Hast du die Fehlermeldung / Exception nicht gelesen? |
AW: Probleme mit HTTP.Get
Danke Super Danke LTES
ssleay32.dll habe ich häufig auf meinem System gefunden bei libssl32.dll sieht es Mau aus. Mann kann das runterladen habe aber Angst mir ein Super Virus einzufangen Ihr seit toll:thumb: |
AW: Probleme mit HTTP.Get
Liste der Anhänge anzeigen (Anzahl: 1)
Da hast Du recht nur ich hätte auch mit dem Lesen der Message nicht gewußt was zu machen ist
Danke |
AW: Probleme mit HTTP.Get
Ich gehe da immer so vor, dass ich vor Abschicken des Befehls eine Instanz von TIdSSLIOHandlerSocketOpenSSL erzeuge und mit Daten fülle (Host, Port, Destination, TLS-Modus).
Ob das notwendig ist weiß ich nicht. Ich machs einfach. Oder reicht ein simples
Delphi-Quellcode:
IOHndl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
IOHandler := IOHndl; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 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