SOAP - Panduan Cepat
SOAP adalah singkatan dari Simple Object Access Protocol. Ini adalah protokol perpesanan berbasis XML untuk bertukar informasi antar komputer. SOAP adalah aplikasi spesifikasi XML.
Poin yang Perlu Diperhatikan
SOAP adalah protokol komunikasi yang dirancang untuk berkomunikasi melalui Internet.
SOAP dapat memperluas HTTP untuk perpesanan XML.
SOAP menyediakan transportasi data untuk layanan Web.
SOAP dapat bertukar dokumen lengkap atau memanggil prosedur jarak jauh.
SOAP dapat digunakan untuk menyiarkan pesan.
SOAP tidak bergantung pada platform dan bahasa.
SOAP adalah cara XML untuk menentukan informasi apa yang dikirim dan bagaimana.
SOAP memungkinkan aplikasi klien untuk dengan mudah terhubung ke layanan jarak jauh dan menggunakan metode jarak jauh.
Meskipun SOAP dapat digunakan dalam berbagai sistem pesan dan dapat dikirim melalui berbagai protokol transport, fokus awal SOAP adalah panggilan prosedur jarak jauh yang diangkut melalui HTTP.
Kerangka kerja lain termasuk CORBA, DCOM, dan Java RMI menyediakan fungsionalitas yang mirip dengan SOAP, tetapi pesan SOAP ditulis seluruhnya dalam XML dan oleh karena itu secara unik tidak bergantung pada platform dan bahasa.
Pesan SOAP adalah dokumen XML biasa yang berisi elemen berikut -
Envelope- Menentukan awal dan akhir pesan. Ini adalah elemen wajib.
Header- Berisi atribut opsional dari pesan yang digunakan dalam memproses pesan, baik pada titik perantara atau pada titik akhir akhir. Ini adalah elemen opsional.
Body- Berisi data XML yang terdiri dari pesan yang dikirim. Ini adalah elemen wajib.
Fault - Elemen Kesalahan opsional yang memberikan informasi tentang kesalahan yang terjadi saat memproses pesan.
Semua elemen ini dideklarasikan di namespace default untuk amplop SOAP - http://www.w3.org/2001/12/soap-envelope dan namespace default untuk encoding SOAP dan tipe data adalah - http://www.w3.org/2001/12/soap-encoding
NOTE- Semua spesifikasi ini dapat berubah. Jadi terus perbarui diri Anda dengan spesifikasi terbaru yang tersedia di situs web W3.
Struktur Pesan SOAP
Blok berikut menggambarkan struktur umum pesan 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>
Amplop SOAP menunjukkan awal dan akhir pesan sehingga penerima mengetahui saat seluruh pesan telah diterima. Amplop SOAP memecahkan masalah mengetahui kapan Anda selesai menerima pesan dan siap untuk memprosesnya. Oleh karena itu, amplop SOAP pada dasarnya adalah mekanisme pengemasan.
Poin yang Perlu Diperhatikan
Setiap pesan SOAP memiliki elemen Envelope root.
Amplop adalah bagian wajib dari pesan SOAP.
Setiap elemen Amplop harus berisi tepat satu elemen Badan.
Jika Envelope berisi elemen Header, itu harus berisi tidak lebih dari satu, dan itu harus muncul sebagai anak pertama dari Envelope, sebelum Body.
Amplop berubah ketika versi SOAP berubah.
Amplop SOAP ditentukan menggunakan prefiks namespace ENV dan elemen Envelope.
Pengkodean SOAP opsional juga ditentukan menggunakan nama namespace dan elemen encodingStyle opsional , yang juga bisa mengarah ke gaya pengkodean selain gaya SOAP.
Prosesor SOAP yang sesuai dengan v1.1 menghasilkan kesalahan saat menerima pesan yang berisi namespace amplop v1.2.
Prosesor SOAP yang sesuai dengan v1.2 menghasilkan kesalahan VersionMismatch jika menerima pesan yang tidak menyertakan namespace amplop v1.2.
v1.2-Compliant SOAP Message
Diberikan di bawah ini adalah contoh pesan SOAP yang sesuai dengan v1.2.
<?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>
SOAP dengan HTTP POST
Contoh berikut menggambarkan penggunaan pesan SOAP dalam operasi HTTP POST, yang mengirimkan pesan ke server. Ini menunjukkan ruang nama untuk definisi skema amplop dan untuk definisi skema aturan enkode. The OrderEntry referensi dalam HTTP header nama program yang akan dipanggil di website 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 - Pengikatan HTTP menentukan lokasi layanan.
Elemen Header opsional menawarkan kerangka kerja yang fleksibel untuk menentukan persyaratan tingkat aplikasi tambahan. Misalnya, elemen Header dapat digunakan untuk menentukan tanda tangan digital untuk layanan yang dilindungi kata sandi. Demikian juga, dapat digunakan untuk menentukan nomor rekening untuk layanan SOAP bayar-per-penggunaan.
Poin yang Perlu Diperhatikan
Ini adalah bagian opsional dari pesan SOAP.
Elemen header dapat muncul beberapa kali.
Header dimaksudkan untuk menambah fitur dan fungsionalitas baru.
Header SOAP berisi entri header yang ditentukan dalam namespace.
Header dikodekan sebagai elemen anak langsung pertama dari amplop SOAP.
Ketika beberapa header didefinisikan, semua elemen turunan langsung dari header SOAP diinterpretasikan sebagai blok header SOAP.
Atribut Header SOAP
Header SOAP dapat memiliki dua atribut berikut -
Atribut aktor
Protokol SOAP mendefinisikan jalur pesan sebagai daftar node layanan SOAP. Masing-masing node perantara ini dapat melakukan beberapa pemrosesan dan kemudian meneruskan pesan ke node berikutnya dalam rantai tersebut. Dengan mengatur atribut Aktor, klien dapat menentukan penerima header SOAP.
Atribut MustUnderstand
Ini menunjukkan apakah elemen Header bersifat opsional atau wajib. Jika disetel ke true, penerima harus memahami dan memproses atribut Header sesuai dengan semantik yang ditentukan, atau mengembalikan kesalahan.
Contoh berikut menunjukkan cara menggunakan Header dalam pesan 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>
Badan SOAP adalah elemen wajib yang berisi data XML yang ditentukan aplikasi yang dipertukarkan dalam pesan SOAP. Isi harus berada di dalam amplop dan harus mengikuti header yang mungkin ditentukan untuk pesan tersebut.
Badan didefinisikan sebagai elemen turunan dari amplop, dan semantik untuk badan didefinisikan dalam skema SOAP terkait.
Isi pesan berisi informasi wajib yang ditujukan untuk penerima pesan terakhir. Misalnya -
<?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>
Contoh di atas meminta kutipan dari set komputer. Perhatikan bahwa elemen m: GetQuotation dan Item di atas adalah elemen khusus aplikasi. Mereka bukan bagian dari standar SOAP.
Berikut adalah tanggapan atas pertanyaan di atas -
<?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>
Biasanya, aplikasi juga mendefinisikan skema untuk memuat semantik yang terkait dengan elemen permintaan dan respons.
Layanan Quotation dapat diimplementasikan menggunakan EJB yang berjalan di server aplikasi; jika demikian, prosesor SOAP akan bertanggung jawab untuk memetakan informasi tubuh sebagai parameter masuk dan keluar dari implementasi EJB layanan GetQuotationResponse . Prosesor SOAP juga dapat memetakan informasi tubuh ke objek .NET, objek CORBA, program COBOL, dan seterusnya.
Jika terjadi kesalahan selama pemrosesan, respons ke pesan SOAP adalah elemen kesalahan SOAP dalam tubuh pesan, dan kesalahan dikembalikan ke pengirim pesan SOAP.
Mekanisme kesalahan SOAP mengembalikan informasi spesifik tentang kesalahan, termasuk kode yang telah ditentukan, deskripsi, dan alamat prosesor SOAP yang menghasilkan kesalahan.
Poin yang Perlu Diperhatikan
Pesan SOAP hanya dapat membawa satu blok kesalahan.
Kesalahan adalah bagian opsional dari pesan SOAP.
Untuk pengikatan HTTP, respons yang berhasil ditautkan ke rentang kode status 200 hingga 299.
Kesalahan SOAP ditautkan ke rentang kode status 500 hingga 599.
Sub-elemen Fault
Kesalahan SOAP memiliki sub elemen berikut -
Sr Tidak | Sub-elemen & Deskripsi |
---|---|
1 | <faultCode> Ini adalah kode teks yang digunakan untuk menunjukkan kelas kesalahan. Lihat Tabel berikutnya untuk daftar kode kesalahan yang telah ditentukan sebelumnya. |
2 | <faultString> Ini adalah pesan teks yang menjelaskan kesalahan tersebut. |
3 | <faultActor> Ini adalah string teks yang menunjukkan siapa yang menyebabkan kesalahan. Berguna jika pesan SOAP berjalan melalui beberapa node di jalur pesan SOAP, dan klien perlu mengetahui node mana yang menyebabkan kesalahan. Node yang tidak bertindak sebagai tujuan akhir harus menyertakan elemen faultActor . |
4 | <detail> Ini adalah elemen yang digunakan untuk membawa pesan kesalahan khusus aplikasi. Elemen detail dapat berisi elemen anak yang disebut entri detail. |
Kode Kesalahan SOAP
Nilai-nilai faultcode didefinisikan di bawah harus digunakan dalam faultcode elemen sementara menggambarkan kesalahan.
Sr Tidak | Kesalahan & Deskripsi |
---|---|
1 | SOAP-ENV:VersionMismatch Menemukan namespace yang tidak valid untuk elemen SOAP Envelope. |
2 | SOAP-ENV:MustUnderstand Elemen turunan langsung dari elemen Header, dengan atribut mustUnderstand disetel ke "1", tidak dipahami. |
3 | SOAP-ENV:Client Format pesan salah atau berisi informasi yang salah. |
4 | SOAP-ENV:Server Ada masalah dengan server, jadi pesan tidak dapat dilanjutkan. |
Contoh Kesalahan SOAP
Kode berikut adalah contoh Kesalahan. Klien telah meminta metode bernama ValidateCreditCard , tetapi layanan tidak mendukung metode tersebut. Ini mewakili kesalahan permintaan klien, dan server mengembalikan respons SOAP berikut -
<?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 menyertakan seperangkat aturan bawaan untuk penyandian tipe data. Ini memungkinkan pesan SOAP untuk menunjukkan tipe data tertentu, seperti integer, float, double, atau array.
Tipe data SOAP dibagi menjadi dua kategori besar - tipe skalar dan tipe gabungan.
Jenis skalar hanya berisi satu nilai seperti nama belakang, harga, atau deskripsi produk.
Tipe gabungan berisi beberapa nilai seperti pesanan pembelian atau daftar harga saham.
Tipe gabungan selanjutnya dibagi lagi menjadi array dan struct.
Gaya pengkodean untuk pesan SOAP diatur melalui atribut SOAP-ENV: encodingStyle .
Untuk menggunakan pengkodean SOAP 1.1, gunakan nilainya http://schemas.xmlsoap.org/soap/encoding/
Untuk menggunakan pengkodean SOAP 1.2, gunakan nilainya http://www.w3.org/2001/12/soap-encoding
Spesifikasi SOAP terbaru mengadopsi semua tipe built-in yang ditentukan oleh XML Schema. Namun, SOAP mempertahankan konvensi sendiri untuk mendefinisikan konstruksi yang tidak distandarisasi oleh XML Schema, seperti array dan referensi.
Jenis Skalar
Untuk jenis skalar, SOAP mengadopsi semua jenis sederhana bawaan yang ditentukan oleh spesifikasi Skema XML. Ini termasuk string, float, doubles, dan integer.
Tabel berikut mencantumkan tipe sederhana utama, dikutip dari XML Schema Part 0 - Primer http://www.w3.org/TR/2000/WD-xmlschema-0-20000407/
Jenis Sederhana Built-In ke XML Schema | ||
---|---|---|
Tipe Sederhana | Contoh | |
tali | Pastikan ini listrik. | |
boolean | benar, salah, 1, 0. | |
mengapung | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN. | |
dua kali lipat | -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN. | |
desimal | -1.23, 0, 123.4, 1000.00. | |
biner | 100010 | |
bilangan bulat | -126789, -1, 0, 1, 126789. | |
nonPositiveInteger | -126789, -1, 0. | |
negativeInteger | -126789, -1. | |
panjang | -1, 12678967543233 | |
int | -1, 126789675 | |
pendek | -1, 12678 | |
byte | -1, 126 | |
nonNegativeInteger | 0, 1, 126789 | |
unsignedLong | 0, 12678967543233 | |
unsignedInt | 0, 1267896754 | |
unsignedShort | 0, 12678 | |
unsignedByte | 0, 126 | |
bilangan bulat positif | 1, 126789. | |
tanggal | 1999-05-31, --- 05. | |
waktu | 13: 20: 00.000, 13: 20: 00.000-05: 00 |
Misalnya, berikut adalah respons SOAP dengan tipe data ganda -
<?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>
Jenis Senyawa
Array SOAP memiliki sekumpulan aturan yang sangat spesifik, yang mengharuskan Anda menentukan tipe elemen dan ukuran array. SOAP juga mendukung array multidimensi, tetapi tidak semua implementasi SOAP mendukung fungsionalitas multidimensi.
Untuk membuat sebuah array, Anda harus menentukannya sebagai sebuah xsi: type of array. Array juga harus menyertakan atribut arrayType . Atribut ini diperlukan untuk menentukan tipe data untuk elemen yang terkandung dan dimensi dari array.
Misalnya, atribut berikut menentukan larik 10 nilai ganda -
arrayType = "xsd:double[10]"
Sebaliknya, atribut berikut menetapkan larik string dua dimensi -
arrayType = "xsd:string[5,5]"
Berikut adalah contoh respons SOAP dengan larik nilai ganda -
<?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>
Struktur berisi beberapa nilai, tetapi setiap elemen ditentukan dengan elemen aksesor unik. Misalnya, pertimbangkan item dalam katalog produk. Dalam hal ini, struct mungkin berisi SKU produk, nama produk, deskripsi, dan harga. Berikut adalah bagaimana struct seperti itu akan direpresentasikan dalam pesan 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- Harap jaga lekukan yang tepat saat Anda menulis kode SOAP. Setiap elemen dalam struct ditentukan dengan nama aksesor unik. Misalnya, pesan di atas menyertakan empat elemen aksesor - nama, harga, deskripsi, dan SKU. Setiap elemen dapat memiliki tipe datanya sendiri. Misalnya, nama ditentukan sebagai string, sedangkan harga ditentukan sebagai ganda.
SOAP tidak terikat dengan protokol transportasi apa pun. SOAP dapat dikirimkan melalui SMTP, FTP, IBM's MQSeries, atau Microsoft Message Queuing (MSMQ).
Spesifikasi SOAP mencakup detail hanya pada HTTP. HTTP tetap menjadi protokol transport SOAP yang paling populer.
SOAP melalui HTTP
Secara logis, permintaan SOAP dikirim melalui permintaan HTTP dan tanggapan SOAP dikembalikan dalam konten tanggapan HTTP. Meskipun permintaan SOAP dapat dikirim melalui HTTP GET, spesifikasinya hanya mencakup detail pada HTTP POST.
Selain itu, permintaan dan respons HTTP diperlukan untuk menyetel jenis kontennya ke teks / xml.
Spesifikasi SOAP mengamanatkan bahwa klien harus menyediakan header SOAPAction, tetapi nilai sebenarnya dari header SOAPAction bergantung pada implementasi server SOAP.
Misalnya, untuk mengakses layanan AltaVista BabelFish Translation, dihosting oleh XMethods, Anda harus menentukan berikut ini sebagai header SOAPAction.
urn:xmethodsBabelFish#BabelFish
Bahkan jika server tidak memerlukan header SOAPAction lengkap, klien harus menentukan string kosong ("") atau nilai null. Misalnya -
SOAPAction: ""
SOAPAction:
Berikut ini contoh permintaan yang dikirim melalui HTTP ke layanan Terjemahan Babelfish XMethods -
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>
Perhatikan tipe konten dan header SOAPAction. Perhatikan juga bahwa metode BabelFish membutuhkan dua parameter String. Mode terjemahan en_fr diterjemahkan dari bahasa Inggris ke bahasa Prancis.
Berikut adalah respon dari 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>
Tanggapan SOAP yang dikirimkan melalui HTTP harus mengikuti kode status HTTP yang sama. Misalnya, kode status 200 OK menunjukkan respons berhasil. Kode status 500 Kesalahan Server Internal menunjukkan bahwa ada kesalahan server dan respons SOAP menyertakan elemen Kesalahan.
Dalam contoh di bawah ini, permintaan GetQuotation dikirim ke SOAP Server melalui HTTP. Permintaan tersebut memiliki parameter QuotationName , dan Quotation akan dikembalikan sebagai tanggapan.
Namespace untuk fungsi ditentukan di http://www.xyz.org/quotation alamat.
Ini permintaan 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>
Respons SOAP yang sesuai terlihat seperti -
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 pada awalnya diserahkan ke W3C pada Mei 2000. Pengirim resmi termasuk perusahaan besar seperti Microsoft, IBM, dan Ariba, dan perusahaan kecil seperti UserLand Software dan DevelopMentor.
Pada bulan Juli 2001, Kelompok Kerja Protokol XML merilis sebuah "draft kerja" SOAP 1.2. Di dalam W3C, dokumen ini secara resmi sedang dalam proses, artinya dokumen tersebut kemungkinan besar akan diperbarui berkali-kali sebelum difinalisasi.
SOAP Versi 1.1 tersedia online di http://www.w3.org/TR/SOAP/
Draf kerja SOAP Versi 1.2 tersedia di http://www.w3.org/TR/soap12/
Perhatikan bahwa W3C juga menjadi tuan rumah pengajuan untuk "Pesan SOAP dengan Lampiran", yang terpisah dari spesifikasi inti SOAP. Spesifikasi ini memungkinkan pesan SOAP menyertakan lampiran biner seperti file gambar dan suara. Untuk detail selengkapnya, lihat Catatan W3C dihttp://www.w3.org/TR/SOAP-attachments.