![]() |
Indy und Quelltext
Hallo zusammen,
also ich hab das hier oft gesucht und öfters in meinen anderen Beiträgen angesprochen aber irgendwie kann mir keiner helfen O.o Ich hab folgendes Problem, wenn ich mit IdHTTP und Get auf eine Seite zugreife und diese dann Daten zurückliefert, wie kann ich diese abrufen? Also sprich, ich brauche immer die Daten die zurückkommen wenn die Seite sich ändern. Mit Fast NMHTTP geht das ja einfach über NMHTTP1.Body (Das sind die Daten) und die kann ich dann immer im OnReceivedData (oder so ähnlich) anfangen. Wie geht das mit Indy? Ich denke mal das dafür den Event OnRedirect brauchen werde und HandleRedirect muss ich auch aktivieren, schon klar. Aber womit kann ich die Daten abrufen? mfG Niko^^ |
Re: Indy und Quelltext
Guten Morgen,
die Daten findest Du im Parameter AResponseContent. procedure Get(AURL: string; const AResponseContent: TStream); overload; function Get(AURL: string): string; overload; Oder er wird Dir als String zurückgegeben. Grüße Klaus |
Re: Indy und Quelltext
versteh ich nicht ganz.
Also mal ein direcktes Beispiel: Gehen wir von einem OnlineChat aus. So... IdHTTP1 verbindet jetzt mit dem Chat und sobald einer schreibt ändert sich ja was am Quelltext, Indy realisiert das und es sollte sowas rauskommen: 1.Im Chat steht z.B: (b00gie) Test 123... 2.Als Quelltext sollte Indy dann zurückliefern <font color=#FF0000>(b00gie) Test 123...</font> SO: Mein Ziel ist es die Daten, die gerade ankommen, sprich wenn einer im Chat was schreibt, abzufangen. Ich habe das immer mit FastNet so realisiert
Delphi-Quellcode:
heißt: Sobald neue Daten da sind, kann ich diese sofort in der Varibale data auslesen,parsen usw....
procedure TForm1.NMHTTP1PacketRecvd(Sender: TObject);
var data:String; begin data:=NMHTTP1.Body; end; sowas würde ich nun gerne mit Indy realisieren, ist das überhaupt möglich? In Indy kannst du ja z.B.
Delphi-Quellcode:
ausführen, aber ich kann ja nicht im "OnRedirect" Indy dauzu auffordern immer zu einer Seite zu connecten
Memo1.Text := IdHTTP1.Get('http://www.xyz.de/');
|
Re: Indy und Quelltext
*PUSH*
und schon wieder endets wie bei meinen Beiträgen, keiner Antwortet mehr^^ |
Re: Indy und Quelltext
Etwas mehr als zwei Stunden musst Du uns schon geben. :roll:
"Pushen" ist hier gar nicht gern gesehen, im Wiederholungsfalle lösche ich wahlweise den Beitrag oder gleich den gesamten Thread. |
Re: Indy und Quelltext
HTTP ist "verbindungslos", das heißt es bleibt keine Verbindung dauerhaft bestehen. Der Client verbindet sich, holt sich die Daten und trennt die Verbindung sofort wieder. Das heißt der Client bekommt garnicht mit, ob sich was ändert, wenn er nicht selber immer wieder nachfragt, oder das ganze zusätzlich mit Späßchen wie Java realisiert wird.
Die einzige Möglichkeit die mir einfällt einen HTTP-Chat zu realisieren ist das HTTP-Refresh meta-tag, mit dessen Hilfe dem Client mitgeteilt wird, nach X Sekunden eine bestimmte Seite zu laden. So macht es IMHO auch der DP-Chat. Das musst du aber selber rausparsen, das macht Indy nicht von alleine, und das ist auch gut so. Wenn du weißt, dass er eh immer nach X Sekunden die gleiche Seite lädt, kannst du das ganze auch per Timer realisieren, also alle X Sekunden die Seite mit TIdHTTP.Get laden und den Inhalt auf Veränderung zum letzten Aufruf prüfen. (Bitte pushe erst nach 24 Stunden. Es ist ein Forum und kein Chat, und nicht jeder hat Werktags Vormittags Zeit, in der DelphiPraxis aktiv zu sein) |
Re: Indy und Quelltext
am besten waere es mit Head erstmal zu schauen ob sich ueberhaupt was geaendert hat. So geht es schneller und es wird auch noch traffic gespart.
|
Re: Indy und Quelltext
hm ich mach ja garkein Chat. Den gibts ja schon. Ich schreibe nur einen Clienten für den Chat und er läuft doch und über NMHTTP1.Body holt er sich doch immer automatisch die neusten Daten ohne das ihm was sagen muss oder so. Nur würde das gerne mit Indy realisieren, weil das paar nützliche Extras hat was das FastNet nicht bietet
|
Re: Indy und Quelltext
ich denke nicht dass das mit den Indys klappt.
Wie gesagt, mit Head nachschauen ob sich die Datei geaendert hat und ggf. mit Get runterladen. rauszufiltern was sich geaendert hat duerfte nich allzu schwer sein. |
Re: Indy und Quelltext
DU solltest vielleicht erstmal eine ordentliche Problemspezifikation aufstellen, sonst versteht hier niemand was du eigentlich erreichen möchtest. Womöglich auch den Link zu dem besagten Chat, sodass wir uns ein Bild davon machen können, oder zumindest eine konkrete Beschreibung der Technik, die eingesetzt wird.
|
Re: Indy und Quelltext
ok ok ok.
Also, ihr wisst alle wie ein Chat aussieht? Sicher wisst ihr das! Man schreibt was in eine Textzeile und bestätigt. In diesem Augenblick erscheinen dann die Daten in einem WebBrowser. Und das sind ja quasi die neuen Daten. Ich verbinde zu diesem Chat über NMHTTP, heißt ich seh garnicht was geschrieben wird und haben auch keinen WebBrowser in dem das angezeigt wird. ABER: NMHTTP hat die Methode OnDataRecvd (oder so änhlich) und diese gibt mir sofort bescheid sobald sich was im Chat verändert, heißt: Wenn einer was schreibt, meldet mir das NMHTTP dieses sofort und dann kann ich über NMHTTP1.Body diese Daten (und zwar NUR die Daten, die neu hinzukommen) abfangen und in meinem Sinne bearbeiten und weiterleiten... Ich möchte nur, dieses Abfangen der neusten Daten (onDataRecvd) mit Indy realisieren. Ist in Indy OnRedirect nicht das Selbe? Falls ja, wären ja 50% schon erledigt. |
Re: Indy und Quelltext
Hallo,
wir bemühen uns wirklich, dir zu helfen! Wie ich bereits schrieb, ist die einzige mir bekannte Möglichkeit, per Hand auf ein http-equiv refresh Meta-Tag zu reagieren - Sprich, die Seite im Timer oder was auch immer regelmäßig mit HTTP.Get abzurufen und die Inhalte vergleichen. Was genau FastNMHTTP da anders macht kann ich dir nicht sagen, ich kenne die Komponente nicht. |
Re: Indy und Quelltext
hmja schade =/
Ok, dann lass ich es einfach so und lebe damit das ich nicht alles machen kann was ich möchte, aber dennoch danke an alle Beteiligten =) |
Re: Indy und Quelltext
tut mir leid das das mit den Indys nich klappt aber es ist wirklich kein grosses Hexenwerk sowas selbst zu realisieren. Klar du hast dann keinen Live Chat aber was amcht es wenn der Text ein paar sekunden verzogert erscheint? ist ja auch nicht soooo schlimm. Man kann es ja auch so einstellen dass er sehr aktuell ist aber dann verbraet er vielleicht ein wneig viel Bandbreite des Servers.
|
Re: Indy und Quelltext
es geht ja eben um die Schnelligkeit^^
|
Re: Indy und Quelltext
das interessante waere zu wissen wie deine komponente das macht. lass doch mal nen packetsniffer mitlaufen und schau ob sie vielleicht auch nur alle halbe sekunde nen HEAD an die webseite schickt. Wenn ja dann kannst du das ja auch machen. Klar dann werden halt so 50Kb/s traffic erzeugt aber wenn du es eh schon so mit der Komponente machst dann ist das ja kein "Mehrtraffic" den du erzeugst falls du es von hand machst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 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