SOAP-퀵 가이드

SOAP는 Simple Object Access Protocol의 약자입니다. 컴퓨터간에 정보를 교환하기위한 XML 기반 메시징 프로토콜입니다. SOAP는 XML 사양의 응용 프로그램입니다.

참고 사항

  • SOAP는 인터넷을 통해 통신하도록 설계된 통신 프로토콜입니다.

  • SOAP는 XML 메시징을 위해 HTTP를 확장 할 수 있습니다.

  • SOAP는 웹 서비스에 대한 데이터 전송을 제공합니다.

  • SOAP는 완전한 문서를 교환하거나 원격 프로 시저를 호출 할 수 있습니다.

  • SOAP는 메시지 브로드 캐스트에 사용할 수 있습니다.

  • SOAP는 플랫폼 및 언어 독립적입니다.

  • SOAP는 전송되는 정보와 방법을 정의하는 XML 방식입니다.

  • SOAP를 사용하면 클라이언트 응용 프로그램이 원격 서비스에 쉽게 연결하고 원격 메서드를 호출 할 수 있습니다.

SOAP는 다양한 메시징 시스템에서 사용될 수 있고 다양한 전송 프로토콜을 통해 전달 될 수 있지만 SOAP의 초기 초점은 HTTP를 통해 전송되는 원격 프로 시저 호출입니다.

CORBA, DCOM 및 Java RMI를 포함한 다른 프레임 워크는 SOAP와 유사한 기능을 제공하지만 SOAP 메시지는 전적으로 XML로 작성되므로 플랫폼 및 언어에 독립적입니다.

SOAP 메시지는 다음 요소를 포함하는 일반 XML 문서입니다.

  • Envelope− 메시지의 시작과 끝을 정의합니다. 필수 요소입니다.

  • Header− 중간 지점 또는 최종 끝 지점에서 메시지를 처리하는 데 사용되는 메시지의 선택적 속성을 포함합니다. 선택적 요소입니다.

  • Body− 전송중인 메시지를 구성하는 XML 데이터를 포함합니다. 필수 요소입니다.

  • Fault − 메시지를 처리하는 동안 발생하는 오류에 대한 정보를 제공하는 선택적 Fault 요소.

이 모든 요소는 SOAP 봉투의 기본 네임 스페이스에 선언되어 있습니다. http://www.w3.org/2001/12/soap-envelope SOAP 인코딩 및 데이터 유형의 기본 네임 스페이스는- http://www.w3.org/2001/12/soap-encoding

NOTE− 이러한 모든 사양은 변경 될 수 있습니다. 따라서 W3 웹 사이트에서 제공되는 최신 사양으로 계속 업데이트하십시오.

SOAP 메시지 구조

다음 블록은 SOAP 메시지의 일반적인 구조를 설명합니다.

<?xml version = "1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Header>
      ...
      ...
   </SOAP-ENV:Header>
   <SOAP-ENV:Body>
      ...
      ...
      <SOAP-ENV:Fault>
         ...
         ...
      </SOAP-ENV:Fault>
      ...
   </SOAP-ENV:Body>
</SOAP_ENV:Envelope>

SOAP 봉투는 메시지의 시작과 끝을 나타내므로 수신자는 전체 메시지가 언제 수신되었는지 알 수 있습니다. SOAP 봉투는 메시지 수신이 완료되고 메시지를 처리 ​​할 준비가되었는지 아는 문제를 해결합니다. 따라서 SOAP 봉투는 기본적으로 패키징 메커니즘입니다.

참고 사항

  • 모든 SOAP 메시지에는 루트 Envelope 요소가 있습니다.

  • 봉투는 SOAP 메시지의 필수 부분입니다.

  • 모든 Envelope 요소는 정확히 하나의 Body 요소를 포함해야합니다.

  • Envelope에 Header 요소가 포함되어 있으면 하나만 포함해야하며 Body 앞에 Envelope의 첫 번째 자식으로 나타나야합니다.

  • SOAP 버전이 변경되면 봉투가 변경됩니다.

  • SOAP 봉투는 ENV 네임 스페이스 접두사 및 Envelope 요소를 사용하여 지정됩니다 .

  • 선택적 SOAP 인코딩은 네임 스페이스 이름과 선택적 encodingStyle 요소를 사용하여 지정됩니다 . 이는 SOAP 스타일이 아닌 다른 인코딩 스타일을 가리킬 수도 있습니다.

  • v1.1 호환 SOAP 프로세서는 v1.2 봉투 네임 스페이스가 포함 된 메시지를 수신하면 오류를 생성합니다.

  • v1.2 호환 SOAP 프로세서 는 v1.2 엔벨로프 네임 스페이스를 포함하지 않는 메시지를 수신하면 VersionMismatch 오류를 생성 합니다.

v1.2 호환 SOAP 메시지

다음은 v1.2 호환 SOAP 메시지의 예입니다.

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">
   ...
   Message information goes here
   ...
</SOAP-ENV:Envelope>

HTTP POST를 사용하는 SOAP

다음 예제는 메시지를 서버로 보내는 HTTP POST 작업 내에서 SOAP 메시지를 사용하는 방법을 보여줍니다. 엔벨로프 스키마 정의 및 인코딩 규칙의 스키마 정의에 대한 네임 스페이스를 보여줍니다. HTTP 헤더 의 OrderEntry 참조는 tutorialspoint.com 웹 사이트에서 호출 할 프로그램의 이름입니다.

POST /OrderEntry HTTP/1.1
Host: www.tutorialspoint.com
Content-Type: application/soap; charset = "utf-8"
Content-Length: nnnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope" 
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">
   ...
   Message information goes here
   ...
</SOAP-ENV:Envelope>

NOTE − HTTP 바인딩은 서비스의 위치를 ​​지정합니다.

선택적 Header 요소는 추가 애플리케이션 수준 요구 사항을 지정하기위한 유연한 프레임 워크를 제공합니다. 예를 들어 Header 요소를 사용하여 암호로 보호 된 서비스에 대한 디지털 서명을 지정할 수 있습니다. 마찬가지로, 종량제 SOAP 서비스에 대한 계정 번호를 지정하는 데 사용할 수 있습니다.

참고 사항

  • SOAP 메시지의 선택적 부분입니다.

  • 헤더 요소는 여러 번 나타날 수 있습니다.

  • 헤더는 새로운 기능을 추가하기위한 것입니다.

  • SOAP 헤더에는 네임 스페이스에 정의 된 헤더 항목이 포함됩니다.

  • 헤더는 SOAP 봉투의 첫 번째 직계 자식 요소로 인코딩됩니다.

  • 여러 헤더가 정의 된 경우 SOAP 헤더의 모든 직계 자식 요소는 SOAP 헤더 블록으로 해석됩니다.

SOAP 헤더 속성

SOAP 헤더는 다음 두 가지 속성을 가질 수 있습니다.

배우 속성

SOAP 프로토콜은 메시지 경로를 SOAP 서비스 노드 목록으로 정의합니다. 이러한 각 중간 노드는 일부 처리를 수행 한 다음 메시지를 체인의 다음 노드로 전달할 수 있습니다. Actor 속성을 설정함으로써 클라이언트는 SOAP 헤더의 수신자를 지정할 수 있습니다.

MustUnderstand 속성

Header 요소가 선택적인지 필수인지 여부를 나타냅니다. true로 설정된 경우 수신자는 정의 된 의미에 따라 Header 속성을 이해하고 처리하거나 오류를 반환해야합니다.

다음 예제는 SOAP 메시지에서 헤더를 사용하는 방법을 보여줍니다.

<?xml version = "1.0"?>
<SOAP-ENV:Envelope 
   xmlns:SOAP-ENV = " http://www.w3.org/2001/12/soap-envelope"   
   SOAP-ENV:encodingStyle = " http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Header>
      <t:Transaction 
         xmlns:t = "http://www.tutorialspoint.com/transaction/" 
         SOAP-ENV:mustUnderstand = "true">5
      </t:Transaction>
   </SOAP-ENV:Header>
   ...
   ...
</SOAP-ENV:Envelope>

SOAP 본문은 SOAP 메시지에서 교환되는 애플리케이션 정의 XML 데이터를 포함하는 필수 요소입니다. 본문은 봉투 내에 포함되어야하며 메시지에 대해 정의 될 수있는 모든 헤더를 따라야합니다.

본문은 봉투의 자식 요소로 정의되고 본문의 의미는 관련 SOAP 스키마에 정의됩니다.

본문에는 메시지의 최종 수신자를위한 필수 정보가 포함되어 있습니다. 예를 들면-

<?xml version = "1.0"?>
<SOAP-ENV:Envelope>
   ........
   <SOAP-ENV:Body>
      <m:GetQuotation xmlns:m = "http://www.tp.com/Quotation">
         <m:Item>Computers</m:Item>
      </m:GetQuotation>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

위의 예는 컴퓨터 세트의 견적을 요청합니다. 위의 m : GetQuotation 및 Item 요소는 애플리케이션 별 요소입니다. SOAP 표준의 일부가 아닙니다.

다음은 위의 쿼리에 대한 응답입니다.

<?xml version = "1.0"?>
<SOAP-ENV:Envelope>
   ........
   <SOAP-ENV:Body>
      <m:GetQuotationResponse xmlns:m = "http://www.tp.com/Quotation">
         <m:Quotation>This is Qutation</m:Quotation>
      </m:GetQuotationResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

일반적으로 애플리케이션은 요청 및 응답 요소와 연관된 의미를 포함하는 스키마도 정의합니다.

견적 서비스는 응용 프로그램 서버에서 실행중인 EJB를 사용하여 구현 될 수있다; 그렇다면 SOAP 프로세서는 본문 정보를 GetQuotationResponse 서비스 의 EJB 구현 안팎으로 매개 변수로 매핑 할 책임이 있습니다 . SOAP 프로세서는 본문 정보를 .NET 개체, CORBA 개체, COBOL 프로그램 등에 매핑 할 수도 있습니다.

처리 중에 오류가 발생하면 SOAP 메시지에 대한 응답은 메시지 본문의 SOAP 오류 요소이며 오류는 SOAP 메시지의 보낸 사람에게 반환됩니다.

SOAP 오류 메커니즘은 미리 정의 된 코드, 설명 및 오류를 생성 한 SOAP 프로세서의 주소를 포함하여 오류에 대한 특정 정보를 반환합니다.

참고 사항

  • SOAP 메시지는 하나의 오류 블록 만 전달할 수 있습니다.

  • 결함은 SOAP 메시지의 선택적 부분입니다.

  • HTTP 바인딩의 경우 성공적인 응답은 200-299 범위의 상태 코드에 연결됩니다.

  • SOAP 오류는 500-599 범위의 상태 코드에 연결됩니다.

결함의 하위 요소

SOAP 오류에는 다음과 같은 하위 요소가 있습니다.

Sr. 아니요 하위 요소 및 설명
1

<faultCode>

오류 클래스를 나타내는 데 사용되는 텍스트 코드입니다. 미리 정의 된 오류 코드 목록은 다음 표를 참조하십시오.

2

<faultString>

오류를 설명하는 문자 메시지입니다.

<faultActor>

오류의 원인을 나타내는 텍스트 문자열입니다. SOAP 메시지가 SOAP 메시지 경로의 여러 노드를 통해 이동하고 클라이언트가 오류를 일으킨 노드를 알아야하는 경우 유용합니다. 최종 목적지로 작동하지 않는 노드는 faultActor 요소를 포함해야합니다 .

4

<detail>

애플리케이션 별 오류 메시지를 전달하는 데 사용되는 요소입니다. 세부 요소에는 세부 항목이라는 하위 요소가 포함될 수 있습니다.

SOAP 오류 코드

아래 정의 된 faultCode 값은 오류를 설명하는 동안 faultcode 요소 에서 사용해야합니다 .

Sr. 아니요 오류 및 설명
1

SOAP-ENV:VersionMismatch

SOAP Envelope 요소에 대한 잘못된 네임 스페이스를 찾았습니다.

2

SOAP-ENV:MustUnderstand

mustUnderstand 속성이 "1"로 설정된 Header 요소의 직계 자식 요소가 인식되지 않았습니다.

SOAP-ENV:Client

메시지의 형식이 잘못되었거나 잘못된 정보가 포함되어 있습니다.

4

SOAP-ENV:Server

서버에 문제가있어 메시지를 진행할 수 없습니다.

SOAP 오류 예

다음 코드는 샘플 오류입니다. 클라이언트가 ValidateCreditCard 라는 메소드를 요청 했지만 서비스가 이러한 메소드를 지원하지 않습니다. 이것은 클라이언트 요청 오류를 나타내며 서버는 다음 SOAP 응답을 반환합니다.

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
   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:Body>
      <SOAP-ENV:Fault>
         <faultcode xsi:type = "xsd:string">SOAP-ENV:Client</faultcode>
         <faultstring xsi:type = "xsd:string">
            Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at
               /usr/local/ActivePerl-5.6/lib/site_perl/5.6.0/SOAP/Lite.pm line 1555.
         </faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

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로 지정됩니다.

SOAP는 전송 프로토콜에 연결되어 있지 않습니다. SOAP는 SMTP, FTP, IBM의 MQSeries 또는 MSMQ (Microsoft Message Queuing)를 통해 전송할 수 있습니다.

SOAP 사양에는 HTTP에 대한 세부 정보 만 포함됩니다. HTTP는 여전히 가장 널리 사용되는 SOAP 전송 프로토콜입니다.

HTTP를 통한 SOAP

논리적으로 SOAP 요청은 HTTP 요청을 통해 전송되고 SOAP 응답은 HTTP 응답의 내용 내에서 반환됩니다. SOAP 요청은 HTTP GET을 통해 보낼 수 있지만 사양에는 HTTP POST에 대한 세부 정보 만 포함됩니다.

또한 콘텐츠 유형을 text / xml로 설정하려면 HTTP 요청과 응답이 모두 필요합니다.

SOAP 사양은 클라이언트가 SOAPAction 헤더를 제공해야한다고 요구 하지만 SOAPAction 헤더 의 실제 값은 SOAP 서버 구현에 따라 다릅니다.

예를 들어 XMethods에서 호스팅하는 AltaVista BabelFish 번역 서비스에 액세스하려면 다음을 SOAPAction 헤더로 지정해야합니다.

urn:xmethodsBabelFish#BabelFish

서버에 전체 SOAPAction 헤더가 필요하지 않더라도 클라이언트는 빈 문자열 ( "") 또는 null 값을 지정해야합니다. 예를 들면-

SOAPAction: ""
SOAPAction:

다음은 HTTP를 통해 XMethods Babelfish 번역 서비스로 전송 된 샘플 요청입니다.

POST /perl/soaplite.cgi HTTP/1.0
Host: services.xmethods.com
Content-Type: text/xml; charset = utf-8
Content-Length: 538
SOAPAction: "urn:xmethodsBabelFish#BabelFish"

<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope 
   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:Body>
      <ns1:BabelFish
         xmlns:ns1 = "urn:xmethodsBabelFish"
         SOAP-ENV:encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/">
         <translationmode xsi:type = "xsd:string">en_fr</translationmode>
         <sourcedata xsi:type = "xsd:string">Hello, world!</sourcedata>
      </ns1:BabelFish>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

콘텐츠 유형과 SOAPAction 헤더를 확인합니다. 또한 BabelFish 메서드에는 두 개의 String 매개 변수가 필요합니다. en_fr 번역 모드는 영어에서 프랑스어로 번역됩니다.

다음은 XMethods의 응답입니다.

HTTP/1.1 200 OK
Date: Sat, 09 Jun 2001 15:01:55 GMT
Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.1pl2
SOAPServer: SOAP::Lite/Perl/0.50
Cache-Control: s-maxage = 60, proxy-revalidate
Content-Length: 539
Content-Type: text/xml

<?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:xsi = "http://www.w3.org/1999/XMLSchema-instance"
   xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:xsd = "http://www.w3.org/1999/XMLSchema">
   
   <SOAP-ENV:Body>
      <namesp1:BabelFishResponse xmlns:namesp1 = "urn:xmethodsBabelFish">
         <return xsi:type = "xsd:string">Bonjour, monde!</return>
      </namesp1:BabelFishResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

HTTP를 통해 전달되는 SOAP 응답은 동일한 HTTP 상태 코드를 따라야합니다. 예를 들어 상태 코드 200 OK는 성공적인 응답을 나타냅니다. 상태 코드 500 내부 서버 오류는 서버 오류가 있고 SOAP 응답에 Fault 요소가 포함되어 있음을 나타냅니다.

아래 예에서 GetQuotation 요청은 HTTP를 통해 SOAP 서버로 전송됩니다. 요청에는 QuotationName 매개 변수가 있으며 응답에 Quotation이 반환됩니다.

함수의 네임 스페이스는 http://www.xyz.org/quotation 주소.

다음은 SOAP 요청입니다.

POST /Quotation HTTP/1.0
Host: www.xyz.org
Content-Type: text/xml; charset = utf-8
Content-Length: nnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/quotations">
      <m:GetQuotation>
         <m:QuotationsName>MiscroSoft</m:QuotationsName>
      </m:GetQuotation>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

해당 SOAP 응답은 다음과 같습니다.

HTTP/1.0 200 OK
Content-Type: text/xml; charset = utf-8
Content-Length: nnn

<?xml version = "1.0"?>
<SOAP-ENV:Envelope
   xmlns:SOAP-ENV = "http://www.w3.org/2001/12/soap-envelope"
   SOAP-ENV:encodingStyle = "http://www.w3.org/2001/12/soap-encoding">

   <SOAP-ENV:Body xmlns:m = "http://www.xyz.org/quotation">
      <m:GetQuotationResponse>
         <m:Quotation>Here is the quotation</m:Quotation>
      </m:GetQuotationResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP 1.1은 원래 2000 년 5 월 W3C에 제출되었습니다. 공식 제출자에는 Microsoft, IBM 및 Ariba와 같은 대기업과 UserLand Software 및 DevelopMentor와 같은 소규모 회사가 포함되었습니다.

2001 년 7 월 XML 프로토콜 작업 그룹은 SOAP 1.2의 "작업 초안"을 발표했습니다. W3C 내에서이 문서는 공식적으로 진행중인 작업이므로 문서가 완성되기 전에 여러 번 업데이트 될 가능성이 높습니다.

SOAP 버전 1.1은 온라인에서 구할 수 있습니다. http://www.w3.org/TR/SOAP/

SOAP 버전 1.2의 작업 초안은 http://www.w3.org/TR/soap12/

W3C는 또한 핵심 SOAP 사양과는 별 개인 "첨부 파일이있는 SOAP 메시지"에 대한 제출도 호스팅합니다. 이 사양을 사용하면 SOAP 메시지에 이미지 및 사운드 파일과 같은 이진 첨부 파일이 포함될 수 있습니다. 자세한 내용은 W3C Note를 참조하십시오.http://www.w3.org/TR/SOAP-attachments.