SOAP Schnittstelle ansprechen (VB.Net)

Ok, das leuchtet ein. War nur verwirrt, da bei der alten COM-Schnittstelle beide kamen. Danke für die schnelle Hilfe! :wink:

Hast Du mir hier drauf auch eine Antwort? :slight_smile:

Die Funktion gibt es nativ in IP-Symcon nicht, da sie nicht typensicher ist.
Für PHP wird sie extra eingefügt und dann auf allerlei Konvertierungen geachtet. In PHP gibt es auch keine typensicheren Variablen - also ist es damit einfacher und eh egal.

Und nein, es wird sie auch nicht geben :wink:

paresy

Ich verwende MS wsdl.exe Tool um mir C# Proxyklassen für die SOAP-Schnittstelle zu erzeugen. Das funktioniert mit den meisten Klassen gut,
abgesehen von der (häufiger auftretenden) Warnung

Warnung bei der Schemaüberprüfung: In diesem Schema ist Namespace ‚http://schemas.xmlsoap.org/soap/encoding/‘ nicht für den Verweis verfügbar.

Bei IIPSFilePool beendet sich aber wsdl mit folgendem Fehler:(

Der Vorgang ‚DownloadFile‘ im Anschlusstyp ‚IIPSFilePool‘ aus dem Namespace
http://localhost/‘ enthält folgenden Syntaxfehler: Der Vorgang hat keine übereinstimmende Bindung. Überprüfen Sie, ob die Eingabe- und Ausgabenamen im Bindungsabschnitt mit den entsprechenden Namen im PortType-Abschnitt übereinstimmen.

Irgendwelche Ideen zu diesen Fehlermeldungen?

Nein. Ist nicht dein Fehler. Irgendwie erzeugt Delphi diese WSDL falsch. Java kann damit auch nicht umgehen. Brauchst du die dringend?

paresy

Außerdem gibt es Probleme mit allen Klassen, die TRemotable verwenden.

wsdl.exe bricht dann ab mit Fehlermeldung. Es fehlt die Typendefinition. Irgend eine Idee, was da schiefläuft?

Gibt es hierfür irgendeinen Hinweis, warum das nicht geht? Wenn ich diesen Befehl hätte, könnt ich meine Klasse fertigstellen und auf V2 umstellen. :o

Ja… :rolleyes:

Oder sollte die Frage lauten: Was kann ich tun?
Nichts. Abwarten bis paresy das umbaut. Ich vermute nämlich stark, dass das so nicht beabsichtigt war. Gleichzeitig vemute ich aber, dass der WSDL Export nicht die höchste Prio hat. Wir beide dürften so ziemlich die einzigen Anwender sein, und ich brauchs eigentlich garnicht :wink:

Toni

Klar. Der Grund ist, du hast den TIDHeader vergessen, in dem die InstanzID angegeben wird. Wenn du das machst, läuft alles wie gewollt.

paresy

Hallo paresy,

Danke mal wieder für die Info. Damit klappt´s. :wink:
Im Laufe der Woche werde ich die Klasse dann mal zur Verfügung stellen.

Nun häng ich leider wieder…
Ich wollte nun die WSDL der FS20-Geräte einbinden. Es scheitert aber an folgender Fehlermeldung:

Custom tool error: Unable to import WebService/Schema. Unable to import binding ‚IIPSFS20binding‘ from namespace ‚http://localhost/‘. Unable to import operation ‚GetDeviceAddress‘. The datatype ‚urn:UIPSModuleTypes:TRemotable‘ is missing.

Ne Idee?

[kleinlaut]nochmal nachfrag…?[/kleinlaut] :wink:

Im LiveUpdate gibt es dafür einen Fix.

paresy

Du bist mein Held! :smiley:

Und hier nun die Klasse für VB.Net und die SOAP-Schnittstelle. Ist aber wieder auf meine SW angepasst, aber das Grundgerüst sollte sich von Interessierten nutzen lassen.
Ich hoffe, manch einer kann sie brauchen.

Vielen Dank nochmal an paresy! :wink:

IIPSsoap.zip (1.99 KB)

Hallo paresy,

hab leider doch noch ein Problem: wenn ich eine FS20-Instanz schalten will (über SwitchMode) kommt folgende SOAP-Exception:
„No class registered for invokable interface IIPSFS20“.

Hab ich da noch einen Käfer drin? Hab das heute morgen gar nicht mehr getestet, da ich dachte, das wird schon laufen…:stuck_out_tongue:

Ich glaube, dass du wieder den TIDHeader vergessen hast :slight_smile:

paresy

Hat sich erledigt, ich alter Dussel…
Wenn ich den Header erzeuge, sollte ich ihn auch noch zuweisen!?

Danke (wie oft hab ich das in dem Thread schon gesagt…?)!

:slight_smile:

Noch ne Kleinigkeit: die ganzen ID´s haben ja den Datentyp Ushort; bei VB.Net und den C-Sprachen haben die den Wertebereich 0 - 65535 (16Bit Ganzzahl). Manche ID´s haben aber einen größeren Wert, so dass es zu Exceptions entweder bei der Zuweisung oder bei einem Vergleich kommt.

Vielleicht kann man das noch ändern?

Verstehe ich nicht. IPS vergibt nur IDs im Wertebereich 10000-60000.

paresy