Categories: Software

SOAP::Lite Web Service erweitern

Zugriff auf Header-Daten im Request

Die Änderungen am Programmcode für den Zugriff auf Elemente des SOAP-Headers im Request sind im Prinzip identisch mit den entsprechenden Änderungen für den Zugriff über Namen auf Elemente des SOAP-Body. Um auf Elemente des Headers zuzugreifen, genügt es, die Subroutine headerof() wie folgt aufzurufen:


7 sub echo {
8 my $self = shift;
9 my $envelope = pop;
10 my $header = $envelope->headerof("
//MyHeaderElementName")->value;
12 # Hier kann man etwas mit den Header-Daten machen
13 my $str = $envelope->dataof("//echo/whatToEcho")->value;
14 return $str;
15 }

So wie bei der dataof()-Subroutine gibt die headerof()-Subroutine ein SOAP::Data-Element zurück, mit dem man auf Namen, Wert, Attribute, Namensraum und Datentyp des entsprechenden Header-Elements zugreifen kann.

Response im Klartext

In den bisherigen Beispielen verwendete die SOAP-Response die Standard SOAP-Codierung von SOAP::Lite. Sollten Sie eines der Beispiele im Debugging-Modus ausgeführt haben, haben Sie sicherlich die merkwürdigen Element-Namen im SOAP-Body der Response bemerkt. Schauen Sie sich dazu einmal das Beispiel für eine SOAP-Response unten an – und dort das Element namens s gensym3.


<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENC=http://schemas.xmlsoap.org/soap/encoding/
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/
encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<namesp1:echoResponse xmlns:namesp1="urn:Echo">
<s-gensym3 xsi:type="xsd:string">Echo this statement</
s-gensym3>
</namesp1:echoResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Falls Ihr Service verlangt, dass dieses Element ausdrücklich benannt wird oder dass der SOAP-Body in der Response komplexere Datenstrukturen enthält, ändern Sie Ihren Request-Handler einfach so, dass er ein SOAP::Data-Objekt zurückgibt statt eines einfachen Skalarwertes. SOAP::Lite wird automatisch das zurückgegebene SOAP::Data-Element in die entsprechende XML-Repräsentation umwandeln. Damit haben Sie die volle Kontrolle über das Ausgabeformat Ihrer Methode.


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 SOAP::Data->name("whatWasEchoed" => "$str");
12 }
13 1;

Das Erstellen komplexer XML-Datenstrukturen mit SOAP::Lite ist nicht immer ganz einfach. Weitere Informationen darüber, wie man komplexe XML-Datenstrukturen mit SOAP::Lite erstellt, nebst praktischen Beispielen zu SOAP::Lite finden Sie in diesem Artikel.

Page: 1 2 3 4 5

ZDNet.de Redaktion

Recent Posts

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

DeepL Voice mit KI für Sprach- übersetzungen

DeepL Voice ermöglicht Live‑Übersetzung von Meetings und Gesprächen in 13 Sprachen.

2 Tagen ago

November-Patchday: Microsoft schließt Zero-Day-Lücken in Windows

Betroffen sind Windows und Windows Server. Microsoft patcht aber auch Schwachstellen in Excel, Word und…

2 Tagen ago

LG zeigt elastisches OLED-Display

Es lässt sich um bis zu 50 Prozent dehnen. Allerdings besitzt es eine deutliche geringere…

3 Tagen ago

BSI zu Cybersicherheit: Bedrohungslage bleibt angespannt

Allerdings nimmt auch die Resilienz gegenüber Cyberattacken zu. Das BSI hat außerdem die Cybersicherheit anstehender…

3 Tagen ago

IT-Ausgaben in Europa steigen 2025 voraussichtlich um 8,7 Prozent

Es ist das größte Wachstum in einem Jahr seit 2021. Unter anderem lässt das Interesse…

3 Tagen ago