Categories: Software

SOAP::Lite Web Service erweitern

Als alter Perl-Hacker und Web Services-Veteran war ich überrascht, mit wie wenig Aufwand man mit SOAP::Lite loslegen kann (lesen Sie dazu den Artikel Ein Web Service mit SOAP::Lite). Ich kenne kein anderes so umfangreiches SOAP-Toolkit, das so einfach zu verwenden, schnell einzusetzen und flexibel ist. In den folgenden Beispielen werde ich Ihnen zeigen, wie man

  • auf Parameter-Elemente mit Namen zugreift;
  • auf SOAP Header-Elemente in einem Request zugreift;
  • einem Response einen SOAP-Header hinzufügt;
  • eine SOAP-Fault erzeugt;
  • eine Response unter Verwendung von Document Style Encoding erzeugt.

Auf ein SOAP Body-Element mit Namen zugreifen

Standardmäßig schlüsselt SOAP::Lite die einzelnen Daten der SOAP Request-Methode auf und speichert sie in einem entsprechenden Array. Dieses Array wird an die Subroutine des Request-Handlers übergeben. Die Request-Handler-Subroutine kann dann auf diese Parameter zugreifen wie auf jede andere Eingabe mit Parametern. Dies macht die Erstellung von Prototypen unterschiedlicher Services einfach, geht aber u.U. auf Kosten der Flexibilität. Wenn Ihre Methode optionale Parameter hat, wenn sie Attribute hat, auf die Sie zugreifen müssen, oder wenn es nicht auf die Reihenfolge der Parameter ankommt, die Ihrer Methode übergeben werden, dann ist diese zusätzliche Stufe der Vereinfachung eher schädlich als nützlich.

SOAP::Lite bietet eine bequemere Möglichkeit, auf Elemente im Request mit Namen zuzugreifen. Dies gibt einem die zusätzliche Flexibilität, was die Arten von Interfaces für den Service betrifft, die man festlegen möchte. Hier ein Beispiel dafür:


1 #!/usr/bin/perl
2 # Dateiname: Echo.pm
3 package Echo;
4 use strict;
5 use vars qw(@ISA);
6 @ISA = qw(SOAP::Server::Parameters);
7 sub echo {
8 my $self = shift;
9 my $envelope = pop;
10 my $str = $envelope->dataof("//echo/whatToEcho")->value;
11 return $str;
12 }
13 1;

Durch die Erweiterung des SOAP::Server::Parameters-Packages in Zeile 5 und 6 kann man den SOAP-Envelope nach Daten-Elementen abfragen. Um auf den SOAP-Body zuzugreifen, entfernt man zuerst mit der Funktion pop das SOAP-Envelope-Objekt, das automatisch an die Methode übergeben wird. Dann ruft man die Subroutine dataof() auf, um ein SOAP::Data-Objekt zurück zu erhalten, das dem Element name/XPath entspricht, das man angegeben hat (Zeile 10). Da dataof() ein SOAP::Data-Objekt zurückgibt, haben Sie Zugriff auf alle Subroutingen von SOAP::Data, einschließlich value(), name(), type(), uri() und attr(), und können so direkt auf Wert, Namen, Datentyp, URI und alle Attribute des jeweiligen Elements zugreifen.

Page: 1 2 3 4 5

ZDNet.de Redaktion

Recent Posts

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

39 Minuten ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

17 Stunden ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

18 Stunden ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

23 Stunden ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

4 Tagen ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

4 Tagen ago