Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Geparstes PHP Image mit iDHTTP downloaden (https://www.delphipraxis.net/77919-geparstes-php-image-mit-idhttp-downloaden.html)

Jan2006 26. Sep 2006 19:34


Geparstes PHP Image mit iDHTTP downloaden
 
Hallo zusammen!
Bevor ich also ganz verzweifle, frage ich einfach mal hier schnell nach:

Ich versuche seit Stunden mit iDHTTP ein geparstes PHP Image zu downloaden. Also ein Image nach dem Schema (www.dein-server.de/image.php). Lasse ich mir das Image mit dem WebBrowser darstellen ist alles ok. Ich will das ganze aber gerne nicht mit dem Webbrowser erstellen, um Resourcen zu sparen.

Was tun? Irgendeine idee?

Gruß Jan

SirThornberry 26. Sep 2006 20:34

Re: Geparstes PHP Image mit iDHTTP downloaden
 
wie du im Titel bereits geschrieben hast geht das mit TIdHttp.
Mit den Methoden "Post" und "Get" von dieser Komponente kannst du Seiten aufrufen und Daten übermitteln.

Jan2006 26. Sep 2006 21:29

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Leider nein. Jedenfalls nicht auf die einfache Tour. Sprich:

Delphi-Quellcode:
IdHTTP1.Get('http://server/bild.php');
Mir wird hier nur ein leeres / weißes Bild geliefert, da das Bild von PHP generiert wird. Praktisch gesehen müsste ich also warten bis die Seite geladen wurde und auch der PHP Code ausgeführt wurde. Weiß niemand einen Ansatz?

SirThornberry 26. Sep 2006 21:32

Re: Geparstes PHP Image mit iDHTTP downloaden
 
anhand deines Codeschnippsels sieht man nicht wie du die Rückgabe der Seite verarbeitest. Um welche Seite geht es konkret? werden dort eventuell noch daten mitgeschickt?

alcaeus 26. Sep 2006 21:36

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Zitat:

Zitat von Jan2006
Praktisch gesehen müsste ich also warten bis die Seite geladen wurde und auch der PHP Code ausgeführt wurde.

:lol:
Sobald du die Daten kriegst, wurde der PHP-Code bereits ausgefuehrt. Bist du dir auch sicher, dass die Indy-Komponenten nicht zufaellig geblockt sind? (Google macht dies z.B.)

Greetz
alcaeus

Jan2006 26. Sep 2006 21:53

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Über Google habe ich auch schon gelesen und in diesem Zusammenhang habe ich gelesen, dass:

Delphi-Quellcode:
UserAgent:=Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
o.ä.

helfen soll, damit IdHttp praktisch als Browser erkannt wird. Richtig? Oder fehlen da weitere Einstellungen.?

Jan2006 26. Sep 2006 21:55

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Zitat:

Zitat von SirThornberry
anhand deines Codeschnippsels sieht man nicht wie du die Rückgabe der Seite verarbeitest. Um welche Seite geht es konkret? werden dort eventuell noch daten mitgeschickt?

Es geht um keine konkrete Seite. Ich beschäftige mich nur generell mit dem Problem, dass ich PHP generierte Images nicht als Download hinbekomme. Beispiel etwa:

Delphi-Quellcode:
http://212.227.38.33/index.php
Delphi-Quellcode:
http://212.227.38.33/portal/login_bild.php

3_of_8 26. Sep 2006 22:05

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Wieso nicht? Mach doch einfach sowas:

Delphi-Quellcode:
var graphic: TGraphic;
    ms: TMemoryStream;
begin
ms:=TMemoryStream.Create;
graphic:=TJPEGImage.Create; //Oder eine andere Klasse abgeleitet von TGraphic, je nach Bildformat
try
IdHTTP.Get('http://www.server.de/bild.php', ms);
ms.position:=0;
graphic.loadfromstream(ms);
finally
ms.free;
graphic.free;
end;
end;
Das mit dem PHP-Code läuft übrigens in etwa so ab (vereinfacht):
1. Indys senden HTTP-Request an den Server
2. Server schaut in die Datei, merkt, dass es eine PHP ist, parst sie und sendet das Ergebnis als HTTP-Response zurück
3. Indys empfangen den Response und die Methode Get wird beendet und liefert das Ergebnis ab.

Jan2006 26. Sep 2006 22:17

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Das sieht schon mal gut aus. Bleibt nur die Frage an welcher Stelle ich jetzt mein Bild speichere? Bisher ja immer nach der Methode:

Delphi-Quellcode:
  //stream:=TFileStream.Create('code.jpg', fmCreate);
  //IdHTTP1.Get('http://server/login_bild.php', stream);
  //stream.free;
Wie wird das jetzt richtig eingebaut?

Luckie 26. Sep 2006 22:19

Re: Geparstes PHP Image mit iDHTTP downloaden
 
Du willst nicht zufälligerweise solche Bildchen auslesen die generiert werden um einen Code einzugeben? Bei Anmeldungen auf Webseiten zum Beispiel?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.
Seite 1 von 2  1 2      

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