Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser - Kommunikation selbst verrichten (https://www.delphipraxis.net/161013-twebbrowser-kommunikation-selbst-verrichten.html)

Neotracer 12. Jun 2011 13:15

TWebBrowser - Kommunikation selbst verrichten
 
Hallo DP-Gemeine,

ich möchte die TWebBrowser Komponente benutzen, allerdings möchte ich mich um die Internet-Kommunikation selbst kümmern.
Wenn also eine URL angefragt wird, dann sollte das meiner Unit übergeben werden und diese kümmert sich darum diese mit eigenen HTTP-Routinen usw. aufzurufen. Die Antwort will ich der Komponente dann auch wieder selbst übergeben. Das ist nötig, weil oftmals Umwege (nicht direkt ans Internet angeschlossen) gemacht werden müssen. Und manchmal auch nur auf Offline-Caches zugegriffen wird nach meinem eigenen System.

Dabei ergibt sich noch eine besondere Schwierigkeit. Denn es reicht nicht, einfach nur beispielsweise den HTML-Code von delphipraxis.net zu übergeben und TwebBrowser macht den Rest, weil beispielsweise andere Ressourcen innerhalb der HTML (Bilder, CSS usw.) auch wieder aus dem Internet geladen werden müssen.

Ich brauche also so etwas wie ein Callback für jede URL (auch Bilder, CSS), die aufgerufen wird, damit ich das selber handhaben kann.
Weiss jemand wie das zu bewerkstelligen wäre? Wenn ja, wie geht es?

Danke schonmal

nuclearping 12. Jun 2011 16:51

AW: TWebBrowser - Kommunikation selbst verrichten
 
Als erstes würde mir IdHTTP von Indy einfallen.

Neotracer 12. Jun 2011 18:23

AW: TWebBrowser - Kommunikation selbst verrichten
 
Zitat:

Zitat von nuclearping (Beitrag 1105970)
Als erstes würde mir IdHTTP von Indy einfallen.

Nun ja. IdHTTP holt ja nur eine bestimmte HTML Seite aus dem Internet. Aber das kann ich ja schon, und bewerkstellige das auf verschiedene Weisen.
Ich brauche im Prinzip nur einen HTML-Interpreter, der den HTML Code schön anzeigt und mir jedesmal sagt, was er aus dem Internet braucht, wenn er gerade auf ein Bild stößt oder eine CSS Datei. Er soll es auf keinen Fall selber herunterladen.
Verstehst du was ich meine?

Lannes 12. Jun 2011 19:10

AW: TWebBrowser - Kommunikation selbst verrichten
 
Wenn in keinem Fall irgendwas heruntergeladen werden soll, brauchst du nicht nur einen HTML- sondern auch einen CSS-, JavaScript- ... etc.-Interpreter.

Neotracer 12. Jun 2011 19:21

AW: TWebBrowser - Kommunikation selbst verrichten
 
Zitat:

Zitat von Lannes (Beitrag 1105983)
Wenn in keinem Fall irgendwas heruntergeladen werden soll, brauchst du nicht nur einen HTML- sondern auch einen CSS-, JavaScript- ... etc.-Interpreter.

TWebBrowser kann doch schon alles, oder? Ich kann damit wunderbar surfen. JS und CSS geht. Wird also alles interpretiert.
Intern läuft das ja so:

Es wird zunächst nur EINE URL geholt:

http://example.de/index.php

Beim Interpretieren stellt der Browser fest, dass dort auf noch mehr URLs verwiesen wird. Ein Bild, JS-Script, CSS oder HTML in Frames.
Er findet beispielsweise raus, dass er diese URL braucht um die Seite anzuzeigen:

http://example.de/Bild1.jpg

Mir soll der Interpreter (der ja schon alles kann) einfach alle URLS geben, die er findet, und ich lade diese für ihn runter und übergebe das als Buffer. Sei das ein BILD, ein JS-Script, ein Stylesheet. Völlig egal. Er soll eben nur nicht selbstständig das Bild runterladen.

Ich brauche also eine Art Callback. Sowas:

function GetRessource(URL: String; var outbuffer: Pointer; var len: Integer): Boolean;
begin
// Ich besorge das Bild, HTML oder JS-Sript.. Whatever
end;

Kann ich das irgendwie mit TWebBrowser einrichten? Wenn ja, wie?

Hoffe das ist jetzt verständlich.

Thom 12. Jun 2011 19:33

AW: TWebBrowser - Kommunikation selbst verrichten
 
Wie wär's mit einem Proxy?

himitsu 12. Jun 2011 21:48

AW: TWebBrowser - Kommunikation selbst verrichten
 
Man braucht nichtmal einen richtigen Proxy.
TWebBrowser sollte doch IMHO schon die Schnittstellen bieten, um URLs umzuleiten.

Thom 12. Jun 2011 22:03

AW: TWebBrowser - Kommunikation selbst verrichten
 
Zitat:

Zitat von himitsu (Beitrag 1106002)
Man braucht nichtmal einen richtigen Proxy.
TWebBrowser sollte doch IMHO schon die Schnittstellen bieten, um URLs umzuleiten.

Wenn Du dafür eine Lösung hast, laß hören... :stupid:

himitsu 12. Jun 2011 22:08

AW: TWebBrowser - Kommunikation selbst verrichten
 
Nicht im Kopf.
Aber es gab mindestens 1 oder 2 Ereignissmethoden, welche vor dem Laden von Dateien, aufgerufen werden und ich glaube mich zu erinnern, daß man in einer davon die URL manipulieren konnte.

Thom 12. Jun 2011 22:19

AW: TWebBrowser - Kommunikation selbst verrichten
 
Leider mit Einschränkungen: Diese Methoden werden - zumindest so weit mir bekannt ist - nicht bei jedem einzelnen Element, das die Seite enthält, aufgerufen.
Aber ich laß mich gern eines Besseren belehren. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.
Seite 1 von 3  1 23      

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