da ich nicht so bewandert bin in PHP, suche ich ein VB Projekt das die SOAP Schnittstelle anspricht (VB6 o. .NET), mit der ich dann z.Bsp. eine FS20 Steckdose über VB schalten kann.
Ich habe hier einige Codeschnipsel und Funktionen in dieser Richtung gefunden, mir fehlt allerdings der zusammenhang zum rest der in einem VB Projekt nötig ist.
Vieleicht hat jemand eine art VB Testprojekt mit Form und was dazu gehört, damit ich damit mal rumspielen kann und die zusammenhänge besser verstehe.
Würde mich riesig freuen wenn jemand bereits sowas hat und mir zum Testen und verstehen überlassen könnte!
Nur, sorry, ich meinte das ich nicht weiss was jetzt weiter zu tun ist um mit ips Server zu verbinden und befehle zu senden. Habe .NET erst seit kurzem.
Habe vorher mit VB6 gearbeitet aber SOAP … keine Ahnung.
Ich dachte mir das jemand ein Programm wie in der „IPS 2 SDK in der Doku“, bereits in VB oder .NET gemacht hat.
Gruß Michael
PS:Vielleicht hast du Lust/Zeit mal sowas zu machen, wäre sicher eine Hilfe auch für andere.
hat denn keiner ein fertiges Projekt, (vorzugsweise VB6) mit dem man die
SOAP Schnittstelle ansprechen kann (IPS).
Brauche das, um zu verstehen wie das alles funktioniert und ein wenig rum zu testen.
Oder, ist jemand in der lage das SOAP DEMO in Delphi was in der Doku unter SDK/Tools „IP-Symcon SDK für Version 2.10“ ist, in VB6 oder .NET zu konvertieren?
In meinem Code ist doch eine eigene SOAP-Klasse drin (IIPS_SOAP). Da ist die ganze Kommunikation drin (Verbinden etc). Ich verstehe nicht, was Du noch mehr brauchst? Das ist genau die Konvertierung, die Du ansprichst.
@tommi - Danke den hatte ich auch gefunden. @dfhome - Wäre nicht schlecht wenn deine Klasse bereits eine abfrage und eine Datenanzeige beinhalten würde, damit ich nachvollziehen kann was in welcher weise wohin geschickt wird und angezeigt werden kann.
Ein .net versierter wird sicherlich sofort erkennen was mit deiner klasse zu tun ist, ich leider sehe das nicht und brauche eine Form ein eingabefeld.
Auf deutsch, Programmcode starten, eingabe (zb Script 1234) starten und ergebnis im fenster2 sehen.
Da kann ich was mit anfangen.
Trotzdem Danke.
Gruß Michael
PS: Wäre sicherlich eine gute Idee, das vorhandene Delphi Demo Programm irgendwann mal auch für .NET zu machen.
Wenn Du eine vernünftige IDE benutzt, brauchst Du eigentlich nur angeben, wo die WSDL liegt, und sie baut Dir automatisch Proxyklassen, die Dir die Funktionen zur Verfügung stellt. In der WSDL steht schließlich drin, was rein muss und was raus kommt. VB.Net hat da auch einen Importer für. Wie Du den bedienst weiß Google, ich habe das zuletzt vor 4 Jahren benutzt. In Eclipse für J2EE ist das ein Kinderspiel.
ich habe mal versucht das beispiel was tommi angegeben hat für IPS umzubauen.
Habe mir dazu alles rausgesucht was es hier zum thema gibt, finde leider nichts „vieleicht bin ich ja blind“ wo und wie ich den TIDHeader angeben muss.
Ich weiss es steht in der wsdl, nur reichen meine kenntnisse darüber offensichtlich bei weitem leider nicht aus.
Vieleicht kann mir ja jemand auf die sprünge helfen.
Hier ein teil des Test Programm .
On Error GoTo err_handler
' instanz 33799 Teststeckdose die geschaltet werden soll
s = s & "<SOAP-ENV:Envelope" & vbCrLf
s = s & "xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""" & vbCrLf
s = s & "xmlns:SOAP-ENC=""http://schemas.xmlsoap.org/soap/encoding/""" & vbCrLf
s = s & "xmlns:jsx1=""ipsconnect:IIPSFS20:IIPSFS20""" & vbCrLf
s = s & "xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">" & vbCrLf
s = s & "xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">" & vbCrLf
' Body
s = s & "<SOAP-ENV:Body>" & vbCrLf
s = s & "<jsx1:SwitchMode>" & vbCrLf
s = s & "xmlns:jsx1=""urn:UIPSModuleTypes-IIPSFS20"">"
s = s & "<DeviceOn xsi:type=""xsd:boolean"">true</DeviceOn>" & vbCrLf
s = s & "</jsx1:SwitchMode>" & vbCrLf
s = s & "</SOAP-ENV:Body>" & vbCrLf
' Body
s = s & "</SOAP-ENV:Envelope>" & vbCrLf
o.open "POST", "http://192.168.0.111:3773/soap/IIPSFS20", False
o.setRequestHeader "Content-Type", "text/xml"
o.setRequestHeader "Connection", "close"
o.setRequestHeader "SOAPAction", ""
o.send s
txtResponseHeaders = o.getAllResponseHeaders
txtResponse = o.responseText
err_handler:
If Err.Number <> 0 Then MsgBox "Error " & Err.Number & ": " & Err.Description
Ich denke das es mit TIDHeader eigentlich funktionieren sollte ?
also das VB-Programm funktioniert, bekomme nur folgende Fehlermeldung zurück.
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body>
<SOAP-ENV:Fault><faultactor/><faultcode>SOAP-ENV:Server</faultcode>
<faultstring>No class registered for invokable interface IIPSFS20</faultstring>
</SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
Ich habe hier im Forum gelesen das es an dem fehlendem TIDHeader liegt, ich weiss aber nicht wo im Header und in welchem format ich ihn dort eintragen muss.
Wenn du auf das SOAP Toolkit V3 anspielst, das habe ich hier installiert.
wie bereits erwähnt bin ich mit einem Programm am rumtesten das hier VB projects - SOAP test zu finden ist.
Mein problem nun ist, das ich diesen Header (in VB6 muss man ihn selber zusammenbauen) für ips anpassen muss.
Ich denke das das bis jetzt alles richtig ist (hoffe ich).
Nun muss ich in diesem VB-Code (Header) eben noch den TIDHeader an der entsprechenden stelle an IPS übermitteln (oder habe ich einen denkfehler).
Hier nochmal der Header in dem VB6 Programm.
' instanz 33799 Teststeckdose die geschaltet werden soll
s = s & "<SOAP-ENV:Envelope" & vbCrLf
s = s & "xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/""" & vbCrLf
s = s & "xmlns:SOAP-ENC=""http://schemas.xmlsoap.org/soap/encoding/""" & vbCrLf
s = s & "xmlns:jsx1=""ipsconnect:IIPSFS20:IIPSFS20""" & vbCrLf
s = s & "xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">" & vbCrLf
s = s & "xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">" & vbCrLf
' Body
s = s & "<SOAP-ENV:Body>" & vbCrLf
s = s & "<jsx1:SwitchMode>" & vbCrLf
s = s & "xmlns:jsx1=""urn:UIPSModuleTypes-IIPSFS20"">"
s = s & "<DeviceOn xsi:type=""xsd:boolean"">true</DeviceOn>" & vbCrLf
s = s & "</jsx1:SwitchMode>" & vbCrLf
s = s & "</SOAP-ENV:Body>" & vbCrLf
' Body
s = s & "</SOAP-ENV:Envelope>" & vbCrLf
o.open "POST", "http://192.168.0.111:3773/soap/IIPSFS20", False
o.setRequestHeader "Content-Type", "text/xml"
o.setRequestHeader "Connection", "close"
o.setRequestHeader "SOAPAction", ""
o.send s
txtResponseHeaders = o.getAllResponseHeaders
txtResponse = o.responseText
Ich wollte das bloss zum reinen testen mal so machen um das besser verstehen zu können wie es funktioniert.
Sicher kann ein versierter Programmierer das in der wsdl sehen, ich bin aber leider keiner, deshalb würde ich euch bitten, mir mal zu zeigen wie dann ein solcher Header für IPS aufgebaut ist oder mir mal den code oben mit dem TIDHeader zu vervollständigen.
Geschaltet werden soll eine FS20 Steckdose mit der ID 33799.
Würde mich riesig freuen wenn mir da einer mal helfen könnte!!!
da SOAP nur XML über HTTP ist, kann man sich bei den entsprechenden MS-Bibliotheken bedienen.
Tommi
Funktioniert ja auch soweit ich das erkennen kann, bis auf die Fehlermeldung (am anfang des Themas zu sehen) die auf einen fehlenden TIDHeader (laut paresy, in einem anderem Thema) hindeutet.
Was mir fehlt in dem manuell zusammengebauten HTTP POST ist der TIDHeader.
Weiss denn sonst keiner darüber bescheid ??
Oder hat jemand eine art lauffähiges TestProgramm in VB incl Source um IPS abfragen zu machen??
@dfhome
und wenn ich mich besser mit .Net auseinandergesetzt habe, werde ich auch mit deiner klasse zurechtkommen aber im moment brauche ich ein komplettes lauffähiges Programm zum rumtesten!