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

Facebook Marketplace: EU verhängt Geldbuße von fast 800 Millionen Euro gegen Meta

Die EU-Kommission kritisiert die Verknüpfung von Facebook und dem hauseigenen Online-Kleinanzeigendienst. Sie sieht darin einen…

2 Stunden ago

Umfrage: Angestellte in Deutschland unterschätzen NIS-2-Richtlinie

Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…

11 Stunden ago

Kostenloser Dekryptor für ShrinkLocker

Mit dem Dekryptor von Bitdefender können Opfer von Attacken mit der Shrinklocker-Ransomware Dateien wiederherstellen.

1 Tag ago

Malwarebytes warnt vor Betrugsmaschen beim Weihnachtseinkauf

In der Vorweihnachtszeit ist vor allem Malvertising auf dem Vormarsch. Cyberkriminelle locken Nutzer über schädliche…

1 Tag ago

Bedrohungsindex: Deutliche Zunahme von Infostealern im Oktober

Dazu trägt unter der Infostealer Lumma-Stealer bei. Hierzulande dominiert der Infostealer Formbook die Malware-Landschaft.

2 Tagen ago

Chrome 131 schließt zwölf Sicherheitslücken

Eine schwerwiegende Anfälligkeit hebelt die Sicherheitsfunktion Seitenisolierung auf. Betroffen sind Chrome für Windows, macOS und…

2 Tagen ago