Es kommt oft vor, dass Web Services der Response, die sie an den Aufrufer schicken einen SOAP-Header hinzufügen müssen. Üblicherweise geschieht dies dann, wenn ein Web Service eine Mittlerrolle hat, aber rein technisch darf jeder beteiligte Service der Response Header hinzufügen. Glücklicherweise ist das Hinzufügen von Headern zur Response so einfach wie das Zurückgeben eines Elements mit Namen im SOAP-Body. Geben Sie einfach ein SOAP::Header-Element auf dieselbe Weise zurück wie ein SOAP::Data-Element. SOAP::Lite wird automatisch jedes SOAP::Header-Objekt umwandeln und es der Response hinzufügen – in derselben Reihenfolge, wie es zurückgegeben wird. Hier ein Beispiel:
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 SOAP::Header->name("echoHeader1" => "something"), 13 SOAP::Header->name("echoDate" => time()); 14 } 15 1;
Dieser Code erzeugt die folgende SOAP-Response:
<?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:Header> <echoHeader1 xsi:type="xsd:string">something</echoHeader1> <echoDate xsi:type="xsd:int">1019579390</echoDate> </SOAP-ENV:Header> <SOAP-ENV:Body> <namesp1:echoResponse xmlns:namesp1="urn:Echo"> <whatWasEchoed xsi:type="xsd:string">Echo this statement</ whatWasEchoed> </namesp1:echoResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Neueste Kommentare
Noch keine Kommentare zu SOAP::Lite Web Service erweitern
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.