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

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

4 Stunden ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

9 Stunden ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

9 Stunden ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

1 Tag ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

2 Tagen ago

Bedrohungen in Europa: Schwachstellen in der Lieferkette dominieren

Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…

2 Tagen ago