SOAP - Codierung

SOAP enthält einen integrierten Satz von Regeln zum Codieren von Datentypen. Es ermöglicht der SOAP-Nachricht, bestimmte Datentypen anzugeben, z. B. Ganzzahlen, Floats, Doubles oder Arrays.

  • SOAP-Datentypen werden in zwei große Kategorien unterteilt - Skalartypen und zusammengesetzte Typen.

  • Skalartypen enthalten genau einen Wert wie Nachname, Preis oder Produktbeschreibung.

  • Zusammengesetzte Typen enthalten mehrere Werte wie eine Bestellung oder eine Liste von Börsenkursen.

  • Verbindungstypen werden weiter in Arrays und Strukturen unterteilt.

  • Der Codierungsstil für eine SOAP-Nachricht wird über das Attribut SOAP-ENV: encodingStyle festgelegt .

  • Verwenden Sie den Wert, um die SOAP 1.1-Codierung zu verwenden http://schemas.xmlsoap.org/soap/encoding/

  • Verwenden Sie den Wert, um die SOAP 1.2-Codierung zu verwenden http://www.w3.org/2001/12/soap-encoding

  • Die neueste SOAP-Spezifikation übernimmt alle vom XML-Schema definierten integrierten Typen. Dennoch behält SOAP seine eigene Konvention zum Definieren von Konstrukten bei, die nicht durch das XML-Schema standardisiert sind, wie z. B. Arrays und Referenzen.

Skalartypen

Für skalare Typen übernimmt SOAP alle integrierten einfachen Typen, die in der XML-Schemaspezifikation angegeben sind. Dies umfasst Strings, Floats, Doubles und Integer.

In der folgenden Tabelle sind die wichtigsten einfachen Typen aufgeführt, die aus dem XML-Schema Teil 0 - Primer entnommen wurden http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/

Einfache Typen Integriertes XML-Schema
Einfacher Typ Beispiel (e)
Zeichenfolge Stellen Sie sicher, dass dies elektrisch ist.
Boolescher Wert wahr, falsch, 1, 0.
schweben -INF, -1E4, -0, 0, 12,78E-2, 12, INF, NaN.
doppelt -INF, -1E4, -0, 0, 12,78E-2, 12, INF, NaN.
Dezimal -1,23, 0, 123,4, 1000,00.
binär 100010
ganze Zahl -126789, -1, 0, 1, 126789.
nonPositiveInteger -126789, -1, 0.
negativeInteger -126789, -1.
lange -1, 12678967543233
int -1, 126789675
kurz -1, 12678
Byte -1, 126
nonNegativeInteger 0, 1, 126789
unsignedLong 0, 12678967543233
unsignedInt 0, 1267896754
unsignedShort 0, 12678
unsignedByte 0, 126
positive ganze Zahl 1, 126789.
Datum 1999-05-31, --- 05.
Zeit 13: 20: 00.000, 13: 20: 00.000-05: 00

Hier ist zum Beispiel eine SOAP-Antwort mit einem doppelten Datentyp -

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
   
   <SOAP-ENV:Body>
      <ns1:getPriceResponse 
         xmlns:ns1 = "urn:examples:priceservice"  
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">
         <return xsi:type = "xsd:double">54.99</return>
      </ns1:getPriceResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Verbindungstypen

SOAP-Arrays haben sehr spezielle Regeln, für die Sie sowohl den Elementtyp als auch die Arraygröße angeben müssen. SOAP unterstützt auch mehrdimensionale Arrays, aber nicht alle SOAP-Implementierungen unterstützen mehrdimensionale Funktionen.

Um ein Array zu erstellen, müssen Sie es als Array- Typ xsi: angeben . Das Array muss auch ein arrayType- Attribut enthalten. Dieses Attribut ist erforderlich, um den Datentyp für die enthaltenen Elemente und die Dimension (en) des Arrays anzugeben.

Das folgende Attribut gibt beispielsweise ein Array mit 10 Doppelwerten an:

arrayType = "xsd:double[10]"

Im Gegensatz dazu gibt das folgende Attribut ein zweidimensionales Array von Zeichenfolgen an:

arrayType = "xsd:string[5,5]"

Hier ist eine SOAP-Beispielantwort mit einem Array von Doppelwerten -

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:getPriceListResponse 
         xmlns:ns1 = "urn:examples:pricelistservice"  
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

         <return xmlns:ns2 = "http://www.w3.org/2001/09/soap-encoding"  
            xsi:type = "ns2:Array" ns2:arrayType = "xsd:double[2]">
            <item xsi:type = "xsd:double">54.99</item>
            <item xsi:type = "xsd:double">19.99</item>
         </return>
      </ns1:getPriceListResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Strukturen enthalten mehrere Werte, aber jedes Element wird mit einem eindeutigen Accessor-Element angegeben. Betrachten Sie beispielsweise einen Artikel in einem Produktkatalog. In diesem Fall kann die Struktur eine Produkt-SKU, einen Produktnamen, eine Beschreibung und einen Preis enthalten. So würde eine solche Struktur in einer SOAP-Nachricht dargestellt:

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <SOAP-ENV:Body>
      <ns1:getProductResponse
         xmlns:ns1 = "urn:examples:productservice" 
         SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">
		
         <return xmlns:ns2 = "urn:examples" xsi:type = "ns2:product">
            <name xsi:type = "xsd:string">Red Hat Linux</name>
            <price xsi:type = "xsd:double">54.99</price>
            <description xsi:type = "xsd:string">
               Red Hat Linux Operating System
            </description>
            <SKU xsi:type = "xsd:string">A358185</SKU>
         </return>
      </ns1:getProductResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

NOTE- Bitte achten Sie beim Schreiben Ihres SOAP-Codes auf die richtige Einrückung. Jedes Element in einer Struktur wird mit einem eindeutigen Zugriffsnamen angegeben. Die obige Nachricht enthält beispielsweise vier Accessor-Elemente - Name, Preis, Beschreibung und SKU. Jedes Element kann einen eigenen Datentyp haben. Beispielsweise wird name als Zeichenfolge angegeben, während price als double angegeben wird.