Hallo,
die Aufgabenstellung ist über eine
TCP-Adresse und Port eine Abfrage (per
XML-codiertem Telegramm) an eine Daten-Schnittstelle zu stellen und dann als Antwort
XML-Daten zurück zu erhalten. Die Daten-Schnittstelle (der Server sozusagen) wird also von einer Fremdfirma betrieben. Meine Aufgabe ist nun den Client zu entwickeln der die Daten abfragt.
In einer alten Delphi Applikation haben wir dafür die ICS-Komponenten (konkret TWSocket /
http://www.overbyte.eu/frame_index.html) verwendet. Nun soll mit Delphi 10 Seattle eine neue Schnittstelle entwickelt werden und ich würde gerne ohne unnötige dritte Komponenten auskommen, auch wenn sie kostelos sind wie ICS. Durch Recherche bin ich nun auf die Komponenten TSocketConnection und TIdTCPClient gestossen. Welche der beiden sollte man verwenden oder sind beide nicht geeignet? Zusätzlich ist mein Problem, dass ich die Schnittstelle nicht auf meinem Entwicklungs-Rechner ansprechen kann. Die Schnittstelle steht ausschließlich auf einem Server unseres Kunden zur Verfügung. Ich kann also im Prinzip nur durch trial and error überhaupt an die Schnittstelle andocken, mal eben schnell im object inspector von Delphi ein paar properties setzen und bereits konkrete Abfragen generieren ist also nicht drin. Das einzige was ich vom Kunden zur Verfügung gestellt bekommen habe ist eine XSD-Datei mit dem
XML-Schema der Datei. Daraus habe ich mir in Delphi mit dem "Experte für
XML-Datenanbindung" eine entsprechende
PAS mit der
XML-Datenbindung erstellen lassen, das sind fast 30.000 Zeilen Code.
Auch nach stundenlanger Suche im Internet habe ich keine Beispiele gefunden die ein mehr oder weniger aussagekräftiges Beispiel für die Komponenten TSocketConnection oder TIdTCPClient zeigen. Wenn ich es richtig sehe, dann macht es Sinn im Zusammenhang mit TSocketConnection auch die Komponenten TXMLTransformClient und TXMLTransformProvider zu verwenden. Nur, wie "verknubbelt" man dann die entsprechenden properties und events dieser drei Komponenten?
Die Deluxe-Lösung wäre natürlich ich könnte durch die zurück gelieferten
XML-Daten in einem ClientDataSet durch laufen, um Datensatz für Datensatz abzuarbeiten.
Konkrete Fragen zusammengefasst:
1) Welche der Komponenten TSocketConnection oder TIdTCPClient (kombiniert mit TXMLTransformClient und TXMLTransformProvider) ist für die Aufgabestellung besser geeignet? Gibt es dazu Beispiele?
2) Welche Komponenten benötigt man, um durch die zurück gelieferten Daten in einem ClientDataSet zu laufen? Gibt es dazu Beispiele?
Vielen Dank im Voraus.