AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit HTTP.Get

Ein Thema von ATS3788 · begonnen am 29. Nov 2017 · letzter Beitrag vom 30. Nov 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Probleme mit HTTP.Get

  Alt 29. Nov 2017, 14:43
Hallo ich veruche Images mit Chromium down zu loaden wie in dem Post beschrieben
https://stackoverflow.com/questions/...-image-to-file
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:
 
 HTTPClient.Get(FURL, FileStream);
Mit einem normalen Browser kann ich ohne Probleme das entsprechende Image
speichern. Das Bild, der Link ist also in Ordnung.
Hat dazu jemand eine Idee
Martin MIchael
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:01
Vieleicht HTTPClient.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0'; ?
Thomas
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#4

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:36
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;
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#5

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:37
Was meinst Du mit OpenSSL-DLLs?
Ich habe alle Dlls von Chromium in das
Exe Folder kopiert.

Siehe Anhang
Miniaturansicht angehängter Grafiken
zwischenablage-1.jpg  
Martin MIchael

Geändert von ATS3788 (29. Nov 2017 um 15:40 Uhr) Grund: Grafik angehängt
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:38
Was meinst Du mit OpenSSL-DLLs?

https://indy.fulgan.com/SSL/
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:39
Was meinst Du mit OpenSSL-DLLs?
Ich habe alle Dlls von Chromium in das
Exe Folder kopiert.
ssleay32.dll und libssl32.dll!

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?
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#8

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:47
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
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#9

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:52
Da hast Du recht nur ich hätte auch mit dem Lesen der Message nicht gewußt was zu machen ist
Danke
Miniaturansicht angehängter Grafiken
zwischenablage-2.jpg  
Martin MIchael
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: Probleme mit HTTP.Get

  Alt 29. Nov 2017, 15:55
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:42 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