Sonntag, 21. Dezember 2008

Freaky Friday - A6: Almighty Webservice Client

Ein paar abendliche Punsch können erstaunliche Auswirkungen auf die Kreativität des menschlichen Gehirns haben - so geschehen Freitag abend, als auf der Heimfahrt in der U-Bahn die Idee geboren wurde, einen universellen Webservice Client zu erschaffen.

Die Idee hat sich hartnäckig gehalten und so sind Skripte und Quellen unter http://almighty.pri.univie.ac.at/~aXXXXXXX/a6/client/ zu finden - die Matrikelnummer bitte wieder selbst aus der Teilnehmerliste kopieren.

Ein paar der interessanten Features sind:
  • Komplett automatisiert (Nur WS Name / Ersteller / WSDL URL sind manuell erfasst)
  • Formulargenerierung inkl. Labels
  • Geparster Methodenname als Formulartitel (erkennt "get", "add", CamelCase)
  • Unterstützung komplexer Typen, auch verschachtelt
  • Unterstützung von Arrays als Input Parameter (immer 3 Elemente)
  • Tracelog (Per JavaScript Ein/Ausblendbar)
  • Retournierte Arrays werden als Listen ausgegeben
  • Retournierte Objekte werden als Tabelle ausgegeben (Attributname und Wert)
Sehr viel Magie ist leider nicht dabei, hauptsächlich besteht die Arbeit aus stupidem (quick and dirty) Parsen. Mit ein paar gescheiten Regex wäre das ganze kürzer geworden, aber hauptsächlich ging es mir darum just for fun einen Prototypen zu erstellen. Interessant sind:
  • Reflection für die Objekte: get_object_vars($result); in response.php
  • Method Invocation für den SOAP Client: call_user_func_array( array($this->client,$operation) , $arguments); in definitions.php
Die Anzahl der Server, die damit kompatibel sind ist zwar erschreckend gering, das liegt allerdings an Fehlern in deren Implementierung - Feedback ist in der Auswahlliste zu finden.

2 Kommentare:

Michael Derntl hat gesagt…

Sehr feine Sache! Was Punsch so alles bewirken kann...

David Selig hat gesagt…

Hm, mir wird von Punsch nur übel. Unfair.