4. Konkretes Beispiel für einenSOAP-Request und -Response per HTTPIm Folgenden wird anhand eines reellen Beispielsdemonstriert, welche Informationen bei einer SOAP-Anfrageund -Antwort per HTTP und TCP/IP übertragen werden. Das Beispiel benutzt den AltaVistaBabelfish Translation Service, der von XMethodsals BabelFish-SOAP-Dienst zur Verfügung gestellt wird. Hier
finden Sie ein Java-Programm, mit dem die Abfrage abgesetzt
werden kann.
Unter "Tracing mit TcpTunnelGui und tcpmon"
wird erläutert, wie die übertragenen Daten life mit
TcpTunnelGui "mitgelesen" werden können.
SOAP-Request
POST /perl/soaplite.cgi HTTP/1.0
Host: services.xmethods.net:80
Content-Type: text/xml; charset=utf-8
Content-Length: 546
SOAPAction: ""
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="https://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:BabelFish xmlns:ns1="urn:xmethodsBabelFish"
SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/">
<translationmode xsi:type="xsd:string">de_en</translationmode>
<sourcedata xsi:type="xsd:string">Hallo Welt, Guten Tag</sourcedata>
</ns1:BabelFish>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
|
Lassen Sie sich von den vielen Namespace-Deklarationen
nicht verwirren. Deutlich erkennbar ist folgende Struktur:
Einige Zeilen HTTP-Header, eine Leerzeile, im XML-Teil das
alles umfassende "Envelope"-Element und
darin enthalten das "Body"-Element.
Im "Body"-Element befinden sich die
eigentlichen Nutzdaten, hier im Beispiel "de_en",
da von Deutsch nach Englisch übersetzt werden soll, und der
eigentliche zu übersetzende Text "Hallo Welt,
Guten Tag".
Dazugehöriger SOAP-Response
HTTP/1.1 200 OK
Date: Thu, 05 Sep 2002 08:01:13 GMT
Server: Apache/1.3.22 (Unix) Enhydra-Director
SOAPServer: SOAP::Lite/Perl/0.52
Content-Length: 546
Connection: close
Content-Type: text/xml; charset=utf-8
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENC="https://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="https://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<namesp1:BabelFishResponse xmlns:namesp1="urn:xmethodsBabelFish">
<return xsi:type="xsd:string">hello world, good day</return>
</namesp1:BabelFishResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
|
Auch hier ist wieder deutlich die Struktur erkennbar:
HTTP-Header, Leerzeile, XML-Teil mit dem "Envelope"-Element
und darin das "Body"-Element.
Im "Body"-Element befindet sich das
Ergebnis, hier im Beispiel die mehr oder weniger gut
gelungene Übersetzung "hello world, good day".
|