Mit Perl einen .Net-Webservice abfragen

Mit Perl einen Webservice abzufragen, kann eigentlich nicht so schwer sein, dachte ich. Allerdings habe ich dann, als ich mir SOAP::Lite und dessen Dokumentation ansah, schien das Unterfangen schon deutlich komplizierter. So großartig dieses Modul sein mag, die Dokumentation war für meinen Geschmack zu verstreut und ich hätte mir einige Code-Beispiele gewünscht. Vermutlich lag es aber auch nur daran, dass meine Programmierkenntnisse doch sehr beschränkt sind. Nach einigem Hin und her hat es schließlich dann doch noch geklappt. Im Folgenden zeige ich zwei alternative Möglichkeiten, die zwar beide lauffähig, aber vielleicht nicht gerade effizient sind.

Mein erster Versuch war dann zwar funktionstüchtig, aber so weit davon entfernt elegant zu sein, dass ich nicht ganz zufrieden damit sein konnte. Das Programm verbindet sich mit einem Webservice. Dieser Service verlangt eine Authentifizierung via Klartext- oder MD5-Passwort. Die Funktion GetServerVersion() bildet hier eine Ausnahme und wird zu Testzwecken aufgerufen.

Was genau treibt der Code? Insgesamt werden anhand der Funktion send_request drei Funktionen des Webservice aufgerufen:

  • GetServerVersion()
  • Login(Username,Passwort) (alternativ auch als LoginMD5 implementiert)
  • GetList(SessionID,Timestamp,ObjectName)
  • Logout(SessionID)

Da der .Net-Webserver seine WSDL-Datei auf Verlangen anzeigt, geht die Abfrage des Services sogar auch noch deutlich einfacher:

Links:

Author image
Blogging since 2003 about life, tech, yoga. Passionate about the details and eager to know more. Systems theory meets empathy.
Bochum. Germany.
top