Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHttp (Indy) und iframes (https://www.delphipraxis.net/173772-idhttp-indy-und-iframes.html)

DelTurbo 15. Mär 2013 11:59

IdHttp (Indy) und iframes
 
Hi,
ich möchte eine webseite auslesen in der ein iframe enthalten ist. Leider sind die Infos die ich brauche in dem iframe gespeichert. Zu diesem iframe gibt es auch noch eine besonderheit. Der steht nicht sofort bereit. Sondern erst wenn alle daten zusammen gesucht wurden. Ich schätze mal das dauer 1-2 Sekunden. Erst dann erscheint der iframe.


Nun zu meiner frage: Wie kann ich Indy dazu bringen auch den iframe zu lesen? Oder gibt eine andere Komponente (ausser TWebBrowser) die das kann?

Danke im voraus

mjustin 15. Mär 2013 12:45

AW: IdHttp (Indy) und iframes
 
Zitat:

Zitat von DelTurbo (Beitrag 1207545)
Nun zu meiner frage: Wie kann ich Indy dazu bringen auch den iframe zu lesen?

WIe sieht so ein iframe im HTML denn aus? Wenn es eine URL enthält, kann Indy ja benutzt werden um darauf z.B. ein HTTP GET zu senden.

DelTurbo 15. Mär 2013 12:55

AW: IdHttp (Indy) und iframes
 
Da die Daten im moment der Abfrage noch nicht bereit stehen, steht dort leider src=about:blank

Hier die ganze zeile:
Code:
<iframe id="frUsr" src="about:blank" frameborder="0" width="276" height="152"></iframe>
Da kann ich mich leider nicht "durchhangeln". Ich kenne zwar die "Zielurl" (mit Whireshark gesnifft) aber wenn ich die aufrufe bekomme ich einen fehler. Ich denke das liegt daran das die SessionID verloren geht. Mache ich den trick mit dem IE, dann klappt es.

Das habe ich leider auchnicht gefunden, wie ich Indy dazu bekomme diese ID´s zu behalten und bei der nächsten abfrage wieder übergibt.

CCRDude 15. Mär 2013 13:13

AW: IdHttp (Indy) und iframes
 
Simpelste Möglichkeit: beim Verwalter der Seite nachfragen.

Es könnte natürlich auch sein, dass die Seite das so macht, weil der das nicht will. In dem Fall solltest Du erstmal klären, ob Du das darfst...

mjustin 15. Mär 2013 13:15

AW: IdHttp (Indy) und iframes
 
Zitat:

Zitat von DelTurbo (Beitrag 1207554)
Da die Daten im moment der Abfrage noch nicht bereit stehen, steht dort leider src=about:blank

Hier die ganze zeile:
Code:
<iframe id="frUsr" src="about:blank" frameborder="0" width="276" height="152"></iframe>
Da kann ich mich leider nicht "durchhangeln". Ich kenne zwar die "Zielurl" (mit Whireshark gesnifft) aber wenn ich die aufrufe bekomme ich einen fehler. Ich denke das liegt daran das die SessionID verloren geht. Mache ich den trick mit dem IE, dann klappt es.

Das habe ich leider auchnicht gefunden, wie ich Indy dazu bekomme diese ID´s zu behalten und bei der nächsten abfrage wieder übergibt.


Vermutung: die URL wird erst nach dem Laden des Dokuments per JavaScript zugewiesen. Ein JavaScript Element muss dann im HTML sein, aber Indy ist da leider nicht einsetzbar.

Die SessionID wird meist als Cookie oder als Hidden Form Field übermittelt, beides wird von Indy im Prinzip unterstützt. Aber ohne URL kommt Indy natürlich nicht weiter.

DelTurbo 15. Mär 2013 13:28

AW: IdHttp (Indy) und iframes
 
Zitat:

Zitat von mjustin (Beitrag 1207562)
Die SessionID wird meist als Cookie oder als Hidden Form Field übermittelt, beides wird von Indy im Prinzip unterstützt. Aber ohne URL kommt Indy natürlich nicht weiter.

Siehe oben. Die URL habe ich. Ich habe auch schon ein paar sekunden gewartet bis ich die auslesen. Aber es kommt eine Fehlerseite, die vermuten lässt das die ID fehlt.

Muss man da im idHttp nochwas einstellen?

Gruß

PS.: Mit den CleverInternetSuite klappt das. Also die "zweite" url aufrufen. Da bekomme ich dann die daten. Ich hätte aber lieber Indy genommen.

mjustin 15. Mär 2013 14:06

AW: IdHttp (Indy) und iframes
 
Zitat:

Zitat von DelTurbo (Beitrag 1207564)
Zitat:

Zitat von mjustin (Beitrag 1207562)
Die SessionID wird meist als Cookie oder als Hidden Form Field übermittelt, beides wird von Indy im Prinzip unterstützt. Aber ohne URL kommt Indy natürlich nicht weiter.

Siehe oben. Die URL habe ich. Ich habe auch schon ein paar sekunden gewartet bis ich die auslesen. Aber es kommt eine Fehlerseite, die vermuten lässt das die ID fehlt.

Muss man da im idHttp nochwas einstellen?

Da muss ich raten: es sind SessionIDs in "Cookies"? Um Cookies mitzusenden, muss der IdHTTP Komponente eine Indy Cookie Manager komponente hinzugefügt werden, Beispielcode dazu ist hier im Forum sicher zu finden.

Viel Erfolg,

DelTurbo 15. Mär 2013 15:03

AW: IdHttp (Indy) und iframes
 
Ich habe grade nach gesehen. Du hast recht, die Cookies gehen verloren. Ich schau mal wie man das mit Indy machen muss. Einfach den TIdCookieManager draufziehen und verbinden geht schon mal nicht....

Danke und Gruß

DelTurbo 15. Mär 2013 16:10

AW: IdHttp (Indy) und iframes
 
Um das hier abzuschliessen. Es lag am Indy. Ich hatte Version 10.5.8 drauf. Nun habe ich 10.5.9 drauf, nix an meinem Code geändert, und es geht.

Nochmals Thx....


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