Grundsätzliche Vorgehensweise bei der SOAP-Schnittstelle
Hier nun jeden Befehl der SOAP-Schnittstelle zu erläutern würde zu weit führen. Dazu gibt es ja die überdurchschnittlich gute Dokumentation von IPS.
In der Dokumentation zu der SOAP-Schnittstelle steht, Zitat IPS:
Alle Befehle der SOAP Schnittstelle verhalten sich äquivalent zu denen in PHP. Dadurch kann die normale Befehlsreferenz/Modulreferenz als Dokumentationsgrundlage verwendet werden.
Nun mag der genervte Leser denken:
Man Steiner! Da hast Du dir das Leben wieder verdammt einfach gemacht!
Das er aber recht hat, soll dieses kleine Beispiel zeigen.
Wir werden über die SOAP-Schnittstelle eine neue Kategorie erstellen. Diese Kategorie bekommt den Namen „.SOAP_Interface“. Danach werden wir eine Variable vom Typ „String“ mit dem Namen „SOAP_String“ erstellen. Diese Variable werden wir in die Kategorie „.SOAP_Interface“ verschieben.
Welche Befehle werden dazu benötigt?
Wir beginnen mit „Erstellen einer neuen Kategorie“.
Wir wechseln in die IPS-Dokumentation unter Befehlsreferenz.
Dort gibt es die „Kategorieverwaltung“. In der Kategorieverwaltung finden wir den Befehl: „IPS_CreateCategory“

Mit diesem Befehl wird eine neue Kategorie mit dem Namen „Unnamed Object“ angelegt. Als Rückgabewert bekommt man die IPS_ID der neuen Kategorie.
Wie finde ich nun diesen Befehl in der SOAP-Schnittstelle? Welchen Webservice muss ich als Web-Reference einbinden?
Um das heraus zu finden nutze ich meinen Webbrowser. In der Adresszeile gebe ich folgendes ein:
http://IP-ADRESSE IPS:3773/
Nun werden mir alle Web-Services von IPS angezeigt. Von dem Befehl „IPS_CreateCategory“ suche ich lediglich „CreateCategory“. Den Web-Service oberhalb des gefundenen Befehls muss ich per Klick auf das WSDL auswählen.

In dem nachfolgendem Fenster ist der Name der Klasse die wir später im Programm instanzieren müssen angezeigt.

Die Einbindung erfolgt wie unter „Einrichten der SOAP-Schnittstelle“ beschrieben.
Das Programm:
Zum anlegen einer neuen Kategorie muss die Klasse IIPSCategoryManagerservice instanziert werden. Also schreiben wir nach Public Class Form1 (oä)
Public IPSCategory As New IIPSCategoryManager.IIPSCategoryManagerservice
Zum erzeugen einer neuen Kategorie schreiben wir:
Dim IPS_ID As UShort
IPS_ID = IPSCategory.CreateCategory()
Wenn wir nun die Maus über den Befehl halten bekommen wir exakt die gleiche Beschreibung des Befehls wie in der IPS Befehlsreferenz.

Nach dem ausführen haben wir in IPS eine neue Kategorie mit dem Namen „Unnamed Object…“.
Holy Fuck! Thats magic!
Bevor wir weiter machen löschen wir erst die entstandene Kategorie. (Wer will schon Datenmüll !!)
Als nächstes bekommt die Kategorie den Namen „SOAP_Interface“.
Wir wechseln in die IPS-Dokumentation unter Befehlsreferenz.
Dort gibt es die „Objektverwaltung“. In der Objektverwaltung finden wir den Befehl: „IPS_SetName“

In unserem Webbrowser suchen wir den Befehl „SetName“. Den Web-Service oberhalb des gefundenen Befehls muss ich per Klick auf das WSDL auswählen.
Die Einbindung erfolgt wie unter „Einrichten der SOAP-Schnittstelle“ beschrieben.
Das Programm:
Zum vergeben von Namen muss die Klasse IIPSObjectManagerservice instanziert werden. Also schreiben wir nach Public Class Form1 (oä)
Public IPSObjektManager As New IIPSObjectManager.IIPSObjectManagerservice
Unser Programm wird nun wie folgt abgeändert:
Dim IPS_ID As UShort
IPS_ID = IPSCategory.CreateCategory()
IPSObjektManager.SetName(IPS_ID, “.SOAP_Interface”)
Wenn wir nun die Maus über den Befehl halten bekommen wir nochmals exakt die gleiche Beschreibung des Befehls wie in der IPS Befehlsreferenz.

Nach dem ausführen des Programms haben wir eine neue Kategorie mit dem Namen „.SOAP_Interface“.
Nun werden wir eine Variable vom Typ „String“ mit dem Namen „SOAP_String“ erzeugen.
Wir wechseln in die IPS-Dokumentation unter Befehlsreferenz.
Dort gibt es die „Variablenverwaltung“. In der Variablenverwaltung finden wir den Befehl: „IPS_CreateVariable“

In unserem Webbrowser suchen wir den Befehl „CreateVariable“. Super! Wir brauchen nichts zu tun. Diesen Web-Service haben wir bereits im Kapittel „Einrichten der SOAP-Schnittstelle“ eingebunden.
Das Programm:
Dim IPS_ID As UShort
IPS_ID = IPSVariablen.CreateVariable(3)
IPSObjektManager.SetName(IPS_ID, “SOAP_String”)
Nach dem ausführen des Programms haben wir eine neue Variable mit dem Namen „SOAP_String“. Und wieder ist die Befehlsbeschreibung in VB.NET die gleiche wie in der IPS Befehlsreferenz.
Zu guter letzt wollen wir noch die Variable in die neu erstellte Kategorie „.SOAP_Interface“ verschieben. Dazu löschen wir erst die gerade erzeugte Variable.
Wir wechseln in die IPS-Dokumentation unter Befehlsreferenz.
Dort gibt es die „Objektverwaltung“. In der Objektverwaltung finden wir den Befehl: „IPS_GetObjectIDByName“
(siehe SOAP_29)
In unserem Webbrowser suchen wir den Befehl „GetObjectIDByName“. Klasse! Auch für diesen Befehl brauchen wir nichts zu tun. Diesen Web-Service haben wir bereits.
Das Programm:
Dim IPS_ID As UShort
Dim IPS_ParentID As UShort
IPS_ID = IPSVariablen.CreateVariable(3)
IPSObjektManager.SetName(IPS_ID, “SOAP_String”)
IPS_ParentID = IPSObjektManager.GetObjectIDByName(".SOAP_Interface", 0)
IPSObjektManager.SetParent(IPS_ID, IPS_ParentID)
Und wieder zeigt uns die VB.NET Befehlsbeschreibung das gleiche wie die IPS Befehlsbeschreibung.
Nach dem ausführen des Programms solltet Ihr eine Variable vom Typ „String“ mit dem Namen „SOAP_String“ in der Kategorie mit dem Namen „SOAP_Interface“ haben.
Und was sagt uns dieses Beispiel?
Wenn Herr Steiner sagt:
Alle Befehle der SOAP Schnittstelle verhalten sich äquivalent zu denen in PHP. Dadurch kann die normale Befehlsreferenz/Modulreferenz als Dokumentationsgrundlage verwendet werden.
Dann stimmt das auch. 
In diesem sinne….
Bis dann
Martin


