SABUN - Taşıma
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.
Ek olarak, 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 bir boş 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 alın. 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.