SOAP-인코딩

SOAP에는 데이터 유형 인코딩을위한 기본 제공 규칙 세트가 포함되어 있습니다. 이를 통해 SOAP 메시지가 정수, 부동 소수점, 이중 또는 배열과 같은 특정 데이터 유형을 나타낼 수 있습니다.

  • SOAP 데이터 유형은 스칼라 유형과 복합 유형의 두 가지 범주로 나뉩니다.

  • 스칼라 유형에는 성, 가격 또는 제품 설명과 같은 정확히 하나의 값이 포함됩니다.

  • 복합 유형에는 구매 주문서 또는 주식 시세 목록과 같은 여러 값이 포함됩니다.

  • 복합 유형은 배열과 구조체로 더 세분화됩니다.

  • SOAP 메시지의 인코딩 스타일은 SOAP-ENV : encodingStyle 속성을 통해 설정됩니다 .

  • SOAP 1.1 인코딩을 사용하려면 다음 값을 사용하십시오. http://schemas.xmlsoap.org/soap/encoding/

  • SOAP 1.2 인코딩을 사용하려면 다음 값을 사용하십시오. http://www.w3.org/2001/12/soap-encoding

  • 최신 SOAP 사양은 XML 스키마에 정의 된 모든 내장 유형을 채택합니다. 그래도 SOAP는 배열 및 참조와 같이 XML 스키마에 의해 표준화되지 않은 구문을 정의하기위한 자체 규칙을 유지합니다.

스칼라 유형

스칼라 유형의 경우 SOAP는 XML 스키마 사양에 지정된 모든 기본 제공 단순 유형을 채택합니다. 여기에는 문자열, 부동 소수점, double 및 정수가 포함됩니다.

다음 표는 XML Schema Part 0-Primer에서 발췌 한 주요 단순 유형을 나열합니다. http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/

XML 스키마에 내장 된 단순 유형
간단한 유형
이것이 전기인지 확인하십시오.
부울 참, 거짓, 1, 0.
흙손 -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN.
더블 -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN.
소수 -1.23, 0, 123.4, 1000.00.
바이너리 100010
정수 -126789, -1, 0, 1, 126789.
nonPositiveInteger -126789, -1, 0.
negativeInteger -126789, -1.
-1, 12678967543233
int -1, 126789675
짧은 -1, 12678
바이트 -1, 126
nonNegativeInteger 0, 1, 126789
unsignedLong 0, 12678967543233
unsignedInt 0, 1267896754
unsignedShort 0, 12678
unsignedByte 0, 126
양의 정수 1, 126789.
데이트 1999-05-31, --- 05.
시각 13 : 20 : 00.000, 13 : 20 : 00.000-05 : 00

예를 들어, 여기에 double 데이터 유형이있는 SOAP 응답이 있습니다.

<?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>

화합물 유형

SOAP 배열에는 요소 유형과 배열 크기를 모두 지정해야하는 매우 구체적인 규칙 세트가 있습니다. SOAP는 다차원 배열도 지원하지만 모든 SOAP 구현이 다차원 기능을 지원하는 것은 아닙니다.

배열을 만들려면 배열의 xsi : type 으로 지정해야합니다 . 배열에는 arrayType 속성 도 포함되어야 합니다. 이 속성은 포함 된 요소에 대한 데이터 유형과 배열의 차원을 지정하는 데 필요합니다.

예를 들어, 다음 속성은 10 개의 이중 값 배열을 지정합니다.

arrayType = "xsd:double[10]"

대조적으로, 다음 속성은 문자열의 2 차원 배열을 지정합니다.

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

다음은 이중 값 배열이있는 샘플 SOAP 응답입니다.

<?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>

구조체에는 여러 값이 포함되지만 각 요소는 고유 한 접근 자 요소로 지정됩니다. 예를 들어 제품 카탈로그 내의 항목을 고려하십시오. 이 경우 구조체에는 제품 SKU, 제품 이름, 설명 및 가격이 포함될 수 있습니다. 다음은 이러한 구조체가 SOAP 메시지에 표시되는 방법입니다.

<?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− SOAP 코드를 작성하는 동안 적절한 들여 쓰기에주의하십시오. 구조체의 각 요소는 고유 한 접근 자 이름으로 지정됩니다. 예를 들어, 위의 메시지에는 이름, 가격, 설명 및 SKU의 네 가지 접근 자 요소가 포함됩니다. 각 요소는 고유 한 데이터 유형을 가질 수 있습니다. 예를 들어 name은 문자열로 지정되고 price는 double로 지정됩니다.