SABUN - Hızlı Kılavuz
SOAP, Basit Nesne Erişim Protokolünün kısaltmasıdır. Bilgisayarlar arasında bilgi alışverişi için XML tabanlı bir mesajlaşma protokolüdür. SOAP, XML spesifikasyonunun bir uygulamasıdır.
Dikkat Edilmesi Gereken Noktalar
SOAP, İnternet üzerinden iletişim kurmak için tasarlanmış bir iletişim protokolüdür.
SOAP, XML mesajlaşması için HTTP'yi genişletebilir.
SOAP, Web servisleri için veri aktarımı sağlar.
SOAP, tüm belgeleri değiş tokuş edebilir veya uzak bir prosedürü çağırabilir.
SOAP, bir mesaj yayınlamak için kullanılabilir.
SOAP platformdan ve dilden bağımsızdır.
SOAP, hangi bilgilerin nasıl gönderileceğini tanımlamanın XML yoludur.
SOAP, istemci uygulamalarının uzak hizmetlere kolayca bağlanmasını ve uzak yöntemleri çalıştırmasını sağlar.
SOAP, çeşitli mesajlaşma sistemlerinde kullanılabilmesine ve çeşitli taşıma protokolleri aracılığıyla iletilebilmesine rağmen, SOAP'ın ilk odak noktası, HTTP aracılığıyla taşınan uzak prosedür çağrılarıdır.
CORBA, DCOM ve Java RMI gibi diğer çerçeveler, SOAP'a benzer işlevsellik sağlar, ancak SOAP mesajları tamamen XML'de yazılır ve bu nedenle benzersiz bir şekilde platformdan ve dilden bağımsızdır.
SOAP mesajı, aşağıdaki öğeleri içeren sıradan bir XML belgesidir -
Envelope- Mesajın başlangıcını ve sonunu tanımlar. Zorunlu bir unsurdur.
Header- Bir ara noktada veya nihai bitiş noktasında, mesajın işlenmesinde kullanılan mesajın isteğe bağlı özelliklerini içerir. İsteğe bağlı bir unsurdur.
Body- Gönderilen mesajı içeren XML verilerini içerir. Zorunlu bir unsurdur.
Fault - İletiyi işlerken oluşan hatalar hakkında bilgi sağlayan isteğe bağlı bir Hata öğesi.
Tüm bu öğeler SOAP zarfı için varsayılan ad alanında bildirilir - http://www.w3.org/2001/12/soap-envelope ve SOAP kodlaması ve veri türleri için varsayılan ad alanı - http://www.w3.org/2001/12/soap-encoding
NOTE- Tüm bu özellikler değişebilir. Bu nedenle, W3 web sitesinde bulunan en son özelliklerle kendinizi güncellemeye devam edin.
SOAP Mesaj Yapısı
Aşağıdaki blok, bir SOAP mesajının genel yapısını tasvir etmektedir -
<?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 zarfı mesajın başlangıcını ve sonunu belirtir, böylece alıcı bir mesajın tamamının ne zaman alındığını bilir. SOAP zarfı, bir mesajı ne zaman aldığınızı ve onu işlemeye hazır olduğunuzu bilme sorununu çözer. SOAP zarfı bu nedenle temelde bir paketleme mekanizmasıdır.
Dikkat Edilmesi Gereken Noktalar
Her SOAP mesajının bir kök Zarf öğesi vardır.
Zarf, SOAP mesajının zorunlu bir parçasıdır.
Her Envelope öğesi, tam olarak bir Body öğesi içermelidir.
Bir Zarf bir Başlık öğesi içeriyorsa, birden fazla içermemeli ve Zarfın Gövdeden önce ilk alt öğesi olarak görünmelidir.
SOAP sürümleri değiştiğinde zarf değişir.
SOAP zarfı, ENV ad alanı öneki ve Zarf öğesi kullanılarak belirtilir .
İsteğe bağlı SOAP kodlaması, bir ad alanı adı ve SOAP stilinden farklı bir kodlama stiline de işaret edebilen isteğe bağlı encodingStyle öğesi kullanılarak da belirtilir .
V1.1 uyumlu bir SOAP işlemcisi, v1.2 zarf ad alanını içeren bir mesaj alındığında bir hata oluşturur.
V1.2 uyumlu bir SOAP işlemcisi , v1.2 zarf ad alanını içermeyen bir mesaj alırsa VersionMismatch hatası oluşturur .
v1.2-Uyumlu SOAP Mesajı
Aşağıda, v1.2 uyumlu bir SOAP mesajı örneği verilmiştir.
<?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 ile SABUN
Aşağıdaki örnek, mesajı sunucuya gönderen bir HTTP POST işlemi içinde bir SOAP mesajının kullanımını göstermektedir. Zarf şema tanımı ve kodlama kurallarının şema tanımı için ad alanlarını gösterir. Orderentry HTTP başlık referans tutorialspoint.com web sitesinde çağırılacak programın adıdır.
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 bağlaması, hizmetin konumunu belirtir.
İsteğe bağlı Başlık öğesi, ek uygulama düzeyi gereksinimleri belirtmek için esnek bir çerçeve sunar. Örneğin, Üstbilgi öğesi, parola korumalı hizmetler için dijital bir imza belirtmek için kullanılabilir. Aynı şekilde, kullanım başına ödemeli SOAP hizmetleri için bir hesap numarası belirtmek için kullanılabilir.
Dikkat Edilmesi Gereken Noktalar
SOAP mesajının isteğe bağlı bir parçasıdır.
Üstbilgi öğeleri birden çok kez ortaya çıkabilir.
Başlıklar, yeni özellikler ve işlevler eklemeye yöneliktir.
SOAP başlığı, bir ad alanında tanımlanan başlık girişlerini içerir.
Başlık, SOAP zarfının ilk alt öğesi olarak kodlanır.
Birden fazla başlık tanımlandığında, SOAP başlığının tüm alt öğeleri SOAP başlık blokları olarak yorumlanır.
SABUN Başlık Özellikleri
SABUN Başlığı aşağıdaki iki özelliğe sahip olabilir -
Aktör özelliği
SOAP protokolü, bir mesaj yolunu SOAP servis düğümlerinin bir listesi olarak tanımlar. Bu ara düğümlerin her biri bir miktar işlem gerçekleştirebilir ve ardından mesajı zincirdeki bir sonraki düğüme iletebilir. Actor özniteliğini ayarlayarak, istemci SOAP başlığının alıcısını belirleyebilir.
MustUnderstand özniteliği
Bir Başlık öğesinin isteğe bağlı mı yoksa zorunlu mu olduğunu gösterir. True olarak ayarlanırsa, alıcının Header özniteliğini tanımlanmış semantiğine göre anlaması ve işlemesi veya bir hata döndürmesi gerekir.
Aşağıdaki örnek, bir SOAP mesajında bir Başlığın nasıl kullanılacağını gösterir.
<?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 gövdesi, SOAP mesajında değiş tokuş edilen uygulama tanımlı XML verilerini içeren zorunlu bir öğedir. Gövde, zarf içinde yer almalı ve mesaj için tanımlanabilecek tüm başlıkları takip etmelidir.
Gövde, zarfın alt öğesi olarak tanımlanır ve gövde için anlambilim, ilişkili SOAP şemasında tanımlanır.
Gövde, mesajın nihai alıcısına yönelik zorunlu bilgiler içerir. Örneğin -
<?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>
Yukarıdaki örnek, bilgisayar setlerinin bir teklifini talep etmektedir. Yukarıdaki m: GetQuotation ve Item öğelerinin uygulamaya özel öğeler olduğuna dikkat edin. SOAP standardının bir parçası değildirler.
İşte yukarıdaki sorguya verilen yanıt -
<?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>
Normalde uygulama, istek ve yanıt öğeleriyle ilişkili anlambilim içeren bir şema da tanımlar.
Tırnak hizmeti bir uygulama sunucusunda çalışan bir EJB kullanılarak uygulanabileceği; böyleyse, SOAP işlemcisi vücut bilgisini GetQuotationResponse hizmetinin EJB uygulamasının içine ve dışına parametreler olarak eşlemekten sorumlu olacaktır . SOAP işlemcisi ayrıca vücut bilgisini bir .NET nesnesine, CORBA nesnesine, COBOL programına ve benzerlerine eşleyebilir.
İşleme sırasında bir hata oluşursa, bir SOAP mesajına verilen yanıt, mesajın gövdesindeki bir SOAP hatası öğesidir ve hata, SOAP mesajının göndericisine geri gönderilir.
SOAP hata mekanizması, önceden tanımlanmış bir kod, bir açıklama ve hatayı oluşturan SOAP işlemcisinin adresi dahil olmak üzere hata hakkında belirli bilgiler döndürür.
Dikkat Edilmesi Gereken Noktalar
Bir SOAP mesajı yalnızca bir hata bloğu taşıyabilir.
Hata, SOAP mesajının isteğe bağlı bir parçasıdır.
HTTP bağlama için, başarılı bir yanıt 200 ila 299 durum kodları aralığına bağlanır.
SOAP Fault, 500 ila 599 durum kodları aralığına bağlıdır.
Arızanın Alt Unsurları
SABUN Arızası aşağıdaki alt unsurlara sahiptir -
Sr.No | Alt öğe ve Açıklama |
---|---|
1 | <faultCode> Bir hata sınıfını belirtmek için kullanılan bir metin kodudur. Önceden tanımlanmış arıza kodlarının bir listesi için sonraki Tabloya bakın. |
2 | <faultString> Hatayı açıklayan bir metin mesajıdır. |
3 | <faultActor> Hataya kimin neden olduğunu gösteren bir metin dizesidir. SOAP mesajının SOAP mesaj yolundaki birkaç düğümden geçmesi ve istemcinin hangi düğümün hataya neden olduğunu bilmesi yararlıdır. Nihai hedef olarak hareket etmeyen bir düğüm, bir errorActor öğesi içermelidir . |
4 | <detail> Uygulamaya özel hata mesajlarını taşımak için kullanılan bir unsurdur. Ayrıntı öğesi, ayrıntı girdileri adı verilen alt öğeler içerebilir. |
SABUN Hata Kodları
Aşağıda tanımlanan FaultCode değerleri, hataları tanımlarken hata kodu elemanında kullanılmalıdır .
Sr.No | Hata tanımlaması |
---|---|
1 | SOAP-ENV:VersionMismatch SOAP Envelope öğesi için geçersiz bir ad alanı bulundu. |
2 | SOAP-ENV:MustUnderstand MustUnderstand özniteliği "1" olarak ayarlanmış Header öğesinin hemen alt öğesi anlaşılmadı. |
3 | SOAP-ENV:Client Mesaj yanlış oluşturulmuş veya yanlış bilgi içeriyordu. |
4 | SOAP-ENV:Server Sunucuyla ilgili bir sorun olduğu için mesaj devam edemedi. |
SABUN Hata Örneği
Aşağıdaki kod, örnek bir Hatadır. İstemci, ValidateCreditCard adında bir yöntem istedi , ancak hizmet böyle bir yöntemi desteklemiyor. Bu bir istemci isteği hatasını temsil eder ve sunucu aşağıdaki SOAP yanıtını döndürür -
<?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, veri türlerini kodlamak için yerleşik bir kurallar kümesi içerir. SOAP mesajının tamsayılar, yüzer sayılar, çiftler veya diziler gibi belirli veri türlerini göstermesini sağlar.
SABUN veri türleri iki geniş kategoriye ayrılır - skaler türler ve bileşik türler.
Skaler türler, soyadı, fiyat veya ürün açıklaması gibi tam olarak tek bir değer içerir.
Bileşik türleri, bir satın alma siparişi veya hisse senedi fiyatları listesi gibi birden çok değer içerir.
Bileşik türleri ayrıca dizilere ve yapılara bölünmüştür.
Bir SOAP mesajı için kodlama stili SOAP-ENV: encodingStyle özelliği aracılığıyla ayarlanır .
SOAP 1.1 kodlamasını kullanmak için değeri kullanın http://schemas.xmlsoap.org/soap/encoding/
SOAP 1.2 kodlamasını kullanmak için değeri kullanın http://www.w3.org/2001/12/soap-encoding
En son SOAP belirtimi, XML Şeması tarafından tanımlanan tüm yerleşik türleri benimser. Yine de SOAP, diziler ve referanslar gibi XML Şeması tarafından standartlaştırılmamış yapıları tanımlamak için kendi kuralını korur.
Skaler Türler
Skaler türler için SOAP, XML Şeması belirtiminde belirtilen tüm yerleşik basit türleri benimser. Bu, dizeleri, kayan sayıları, çiftleri ve tam sayıları içerir.
Aşağıdaki tablo, XML Şeması Part 0 - Primer'den alınan ana basit türleri listeler. http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/
XML Şemasında Yerleşik Basit Türler | ||
---|---|---|
Basit Tip | Örnek (ler) | |
dizi | Bunun elektrik olduğunu doğrulayın. | |
Boole | doğru, yanlış, 1, 0. | |
yüzer | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN. | |
çift | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN. | |
ondalık | -1,23, 0, 123,4, 1000,00. | |
ikili | 100010 | |
tamsayı | -126789, -1, 0, 1, 126789. | |
nonPositiveInteger | -126789, -1, 0. | |
negativeInteger | -126789, -1. | |
uzun | -1, 12678967543233 | |
int | -1, 126789675 | |
kısa | -1, 12678 | |
bayt | -1, 126 | |
nonNegativeInteger | 0, 1, 126789 | |
unsignedLong | 0, 12678967543233 | |
unsignedInt | 0, 1267896754 | |
unsignedShort | 0, 12678 | |
unsignedByte | 0, 126 | |
pozitif tamsayı | 1, 126789. | |
tarih | 1999-05-31, --- 05. | |
zaman | 13: 20: 00.000, 13: 20: 00.000-05: 00 |
Örneğin, burada çift veri tipine sahip bir SOAP yanıtı var -
<?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>
Bileşik Türleri
SOAP dizileri, hem öğe türünü hem de dizi boyutunu belirtmenizi gerektiren çok özel bir kurallar kümesine sahiptir. SOAP ayrıca çok boyutlu dizileri destekler, ancak tüm SOAP uygulamaları çok boyutlu işlevselliği desteklemez.
Bir dizi oluşturmak için, onu bir xsi: dizi türü olarak belirtmelisiniz . Dizi ayrıca bir arrayType niteliği içermelidir . Bu özellik, dizinin içerdiği öğeler ve boyut (lar) için veri türünü belirtmek için gereklidir.
Örneğin, aşağıdaki öznitelik 10 çift değerden oluşan bir dizi belirtir -
arrayType = "xsd:double[10]"
Buna karşılık, aşağıdaki öznitelik iki boyutlu bir dizi dizisini belirtir -
arrayType = "xsd:string[5,5]"
İşte bir dizi çift değer içeren örnek bir SOAP yanıtı -
<?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>
Yapılar birden çok değer içerir, ancak her öğe benzersiz bir erişimci öğesiyle belirtilir. Örneğin, bir ürün kataloğu içindeki bir öğeyi düşünün. Bu durumda yapı bir ürün SKU'su, ürün adı, açıklama ve fiyat içerebilir. İşte böyle bir yapının bir SOAP mesajında nasıl temsil edileceği -
<?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- SABUN kodunuzu yazarken lütfen doğru girintiye dikkat edin. Bir yapıdaki her öğe benzersiz bir erişimci adıyla belirtilir. Örneğin, yukarıdaki mesaj dört erişim öğesi içerir - ad, fiyat, açıklama ve SKU. Her elemanın kendi veri türü olabilir. Örneğin, isim bir dizge olarak belirtilirken fiyat double olarak belirtilir.
SOAP herhangi bir taşıma protokolüne bağlı değildir. SOAP, SMTP, FTP, IBM'in MQSeries veya Microsoft Message Queuing (MSMQ) aracılığıyla taşınabilir.
SOAP belirtimi yalnızca HTTP ile ilgili ayrıntıları içerir. HTTP, en popüler SOAP aktarım protokolü olmaya devam etmektedir.
HTTP yoluyla SOAP
Mantıksal olarak, SOAP istekleri bir HTTP isteği yoluyla gönderilir ve SOAP yanıtları, HTTP yanıtının içeriği içinde döndürülür. SOAP istekleri bir HTTP GET aracılığıyla gönderilebilirken, belirtim yalnızca HTTP POST ile ilgili ayrıntıları içerir.
Ayrıca, içerik türlerini text / xml olarak ayarlamak için hem HTTP istekleri hem de yanıtları gerekir.
SOAP belirtimi, istemcinin bir SOAPAction başlığı sağlamasını zorunlu kılar , ancak SOAPAction başlığının gerçek değeri, SOAP sunucusu uygulamasına bağlıdır.
Örneğin, XMethods tarafından barındırılan AltaVista BabelFish Translation hizmetine erişmek için aşağıdakileri bir SOAPAction başlığı olarak belirtmelisiniz.
urn:xmethodsBabelFish#BabelFish
Sunucu tam bir SOAPAction üstbilgisi gerektirmese bile, istemcinin boş bir dize ("") veya boş bir değer belirtmesi gerekir. Örneğin -
SOAPAction: ""
SOAPAction:
XMethods Babelfish Translation hizmetine HTTP aracılığıyla gönderilen örnek bir istek:
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>
İçerik türünü ve SOAPAction başlığını not edin. Ayrıca BabelFish yönteminin iki String parametresi gerektirdiğini unutmayın. En_fr çeviri modu, İngilizceden Fransızcaya çevirir.
İşte XMethods'un yanıtı -
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 aracılığıyla gönderilen SOAP yanıtlarının aynı HTTP durum kodlarını izlemesi gerekir. Örneğin, 200 OK durum kodu başarılı bir yanıtı gösterir. 500 Dahili Sunucu Hatası durum kodu, bir sunucu hatası olduğunu ve SOAP yanıtının bir Hata öğesi içerdiğini gösterir.
Aşağıdaki örnekte, HTTP üzerinden bir SOAP Sunucusuna GetQuotation isteği gönderilir. İstekte bir QuotationName parametresi var ve yanıtta bir Quotation döndürülecek.
İşlevin ad alanı şurada tanımlanmıştır: http://www.xyz.org/quotation adres.
İşte SOAP isteği -
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>
Karşılık gelen bir SOAP yanıtı şuna benzer:
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 ilk olarak Mayıs 2000'de W3C'ye gönderildi. Resmi sunanlar arasında Microsoft, IBM ve Ariba gibi büyük şirketler ve UserLand Software ve DevelopMentor gibi daha küçük şirketler vardı.
Temmuz 2001'de, XML Protokolü Çalışma Grubu SOAP 1.2'nin "çalışma taslağını" yayınladı. W3C içinde, bu belge resmi olarak devam eden bir çalışmadır, yani belgenin nihai hale gelmeden önce birçok kez güncellenmesi muhtemeldir.
SOAP Sürüm 1.1 çevrimiçi olarak şu adresten edinilebilir: http://www.w3.org/TR/SOAP/
SOAP Sürüm 1.2'nin çalışma taslağı şu adreste mevcuttur: http://www.w3.org/TR/soap12/
W3C'nin aynı zamanda, çekirdek SOAP spesifikasyonundan ayrı olan "Ekli SABUN Mesajları" için bir gönderime ev sahipliği yaptığını unutmayın. Bu belirtim, SOAP mesajlarının görüntüler ve ses dosyaları gibi ikili ekleri içermesini sağlar. Tüm ayrıntılar için, adresindeki W3C Notuna bakın.http://www.w3.org/TR/SOAP-attachments.