HAUPPAUGE WinTV-PVR und Media Center Edition 2005: Fernbedienung
Jan 9

Von: Marcel Binot
09.01.2004 

WebServices auf Basis von XmlRpc zu implementieren ist easy und in vielen Fällen absolut ausreichend. Doch wie sieht's mit SOAP aus? In PHP? Eine Low-Level-Unterstützung (wie bei XmlRpc) gibt es für SOAP leider nicht. Auf soapware.org fand ich verschiedene Ansätze für PHP. PEAR bietet sicherlich eine gute Implementierung, aber man benötigt dann natürlich x andere PEAR-Klassen. Das erschien mir irgendwie zu wulstig.
Schnell landetet ich bei nuSphere von Dietrich Ayala. (Ich erinnere mich dunkel, dass ich vor zwei Jahren mit einem ersten Ansatz dieses Autors herumgespielt und erste WebService-Erfolge erzielt hatte. Das hat meine Entscheidung sicherlich beeinflußt...)
Nach wenigen Minuten hatte ich einen kleinen Test-Service eingerichtet; kurze Zeit später einen Test-Client - easy!

Jetzt wollte ich natürlich wissen, ob man auch mit einem fremden Client auf den Server zugreifen kann. Doch schon der Versuch eine Web-Referenz einzurichten schlug kläglich fehl. Der WebService konnte sich nicht selbst beschreiben (Stichwort WSDL) und blieb unerreichbar.
Der Konstruktor des Servers akzeptiert den Parameter $wsdl, womit man wahrscheinlich eine Datei mit den notwendigen Informationen angeben kann, allerdings hatte ich damit kein Glück. Durch ein Beispiel von D.Ayala kam ich auf den Trichter:
$server->configureWSDL('InteropTest','http://soapinterop.org/');
$server->wsdl->schemaTargetNamespace = 'http://soapinterop.org/xsd/';
$server->wsdl->addComplexType('ArrayOfstring','complexType','array','','SOAP->ENC:Array',array(),array(array('ref'=>'SOAP->ENC:arrayType','wsdl:arrayType'=>'string[]')),'xsd:string');

Man kann also die notwendige Beschreibung des WebService mit einer speziellen Klasse des Frameworks definieren. Auch im Visual Studio ließ sich anschließend (fast) problemlos die Web-Referenz einrichten und verwenden.

Tags:
Nutzungsbedingungen
(c) 2010 e-llusions