Eine SOAP-Nachricht zu erstellen ist fast wie das Schreiben und Verschicken eines Briefes. Sobald man eine SOAP-Nachricht erstellt hat, muss man sie in einen SOAP-Umschlag (envelope) stecken und draußen Anweisungen draufschreiben. Hier ein Beispiel für einen solchen SOAP-Umschlag:
<Envelope> <Header> ... </Header> <Body> ... </Body> </Envelope>
Die Auslassungszeichen (drei Punkte) zeigen an, wo der Brief und sonstige Inhalte hineinkommen. Natürlich ist dieses Stück XML genau so schlampig wie das erste send.xml – daher räumen wir die Syntax etwas auf:
<?xml version="1.0" ?> <env:Envelope xmlns:env='http://www.w3.org/2001/12/ soap-envelope'> <env:Header> </env:Header> <env:Body> </env:Body> </env:Envelope>
Dies ist das dritte Set von Tags, das Sie benötigen. Die Tags <Envelope>, <Header> und <Body> (Groß- und Kleinschreibung beachten!) werden durch den SOAP-Standard spezifiziert. Sie beschreiben die Bestandteile des Umschlags, der die SOAP-Daten umgibt, selbst wenn der Umschlag technisch separat von den Daten ist, die man tatsächlich verschickt. Alles zusammen wird „SOAP-Nachricht“ genannt. Lassen Sie uns nun die Nachricht in den Umschlag stecken, wie Listing B zeigt.
Drei „xmlns“ XML-Namensraum-Deklarationen für die drei Sammlungen von Tags werden in der Nachricht verwendet: zwei direkt sichtbare (eine wird wiederholt) und eine in der person.xsd-Datei. Aber was bedeutet der <p:control>-Tag? So wie man die Daten in den Umschlag stecken kann, kann man auch die Header-Funktionen von SOAP nutzen. Wenn man den <p:control>-Tag mit dem SOAP-Attribut „mustUnderstand“ versieht, zeigt dies für den Empfänger der Nachricht, dass die Nachricht intelligent verarbeitet werden muss, oder alles geht schief. Der <control>-Tag ist ein neuer Tag, nur geschaffen für dieses Attribut. Und so kann man es z.B. dem person.xsd-Schema hinzufügen:
<schema:element name="control"> <schema:complexType> </schema:complexType> </schema:element>
Wir wenden hier einen XSchema-Trick an, der verhindert, dass der <control>-Tag irgendwelche Inhalte enthält (ähnlich dem <hr>-Tag in HTML). Nun ist die SOAP-Nachricht vollständig. Wenn man dies alles auch auf die andere Nachricht anwendet, sieht sie aus wie Listing C.
Was jetzt noch bleibt, ist das Verschicken dieser beiden Nachrichten.
Neueste Kommentare
Noch keine Kommentare zu SOAP-Syntax Schritt für Schritt
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.