Tutorial XML

RUMAH XML Pengantar XML XML Cara menggunakan Pohon XML Sintaks XML Elemen XML Atribut XML Ruang Nama XML Tampilan XML XML HttpRequest Pengurai XML XML DOM XML XPath XML XSLT XML XQuery XML XLink Validator XML XML DTD Skema XML Server XML Contoh XML Kuis XML Sertifikat XML

XML AJAX

Pengenalan AJAX AJAX XMLHttp Permintaan AJAX Tanggapan AJAX File XML AJAX AJAX PHP AJAX ASP Basis Data AJAX Aplikasi AJAX Contoh AJAX

XML DOM

Pengenalan DOM Node DOM Mengakses DOM Info Simpul DOM Daftar Simpul DOM Melintasi DOM Navigasi DOM DOM Dapatkan Nilai DOM Ubah Node DOM Hapus Node DOM Ganti Node DOM Buat Node DOM Tambahkan Node Node Klon DOM Contoh DOM

Tutorial XPath

Pengenalan XPath Node XPath Sintaks XPath Sumbu XPath Operator XPath Contoh XPath

Tutorial XSLT

Pengenalan XSLT Bahasa XSL Transformasi XSLT XSLT <templat> XSLT <nilai-dari> XSLT <untuk-setiap> XSLT <sort> XSLT <jika> XSLT <pilih> Terapkan XSLT XSLT di Klien XSLT di Server XSLT Sunting XML Contoh XSLT

Tutorial XQuery

Pengenalan XQuery Contoh XQuery XQuery FLWOR HTML XQuery Persyaratan XQuery Sintaks XQuery Tambahkan XQuery XQuery Pilih Fungsi XQuery

XML DTD

Pengenalan DTD Blok Bangunan DTD Elemen DTD Atribut DTD Elemen DTD vs Attr Entitas DTD Contoh DTD

Skema XSD

Pengenalan XSD XSD Bagaimana caranya? XSD <skema> Elemen XSD Atribut XSD Pembatasan XSD

Kompleks XSD

Elemen XSD XSD Kosong Elemen XSD Saja Hanya Teks XSD Campuran XSD Indikator XSD XSD <apa saja> XSD <anyAttribute> Pergantian XSD Contoh XSD

Data XSD

String XSD Tanggal XSD XSD Numerik XSD Lain-lain Referensi XSD

Layanan Web

Layanan XML XML WSDL XML SOAP XML RDF XML RSS

Referensi

Jenis Node DOM Simpul DOM Daftar Simpul DOM DOM BernamaNodeMap Dokumen DOM Elemen DOM Atribut DOM Teks DOM DOM CDATA Komentar DOM DOM XMLHttpRequest Pengurai DOM Elemen XSLT Fungsi XSLT/XPath

sabun XML


  • SOAP adalah singkatan dari S imple O bject A ccess P protokol
  • SOAP adalah protokol komunikasi aplikasi
  • SOAP adalah format untuk mengirim dan menerima pesan
  • SOAP adalah platform independen
  • SOAP didasarkan pada XML
  • SOAP adalah rekomendasi W3C

Mengapa SABUN?

Penting bagi aplikasi web untuk dapat berkomunikasi melalui Internet.

Cara terbaik untuk berkomunikasi antar aplikasi adalah melalui HTTP, karena HTTP didukung oleh semua browser dan server Internet. SOAP diciptakan untuk mencapai hal ini.

SOAP menyediakan cara untuk berkomunikasi antara aplikasi yang berjalan pada sistem operasi yang berbeda, dengan teknologi dan bahasa pemrograman yang berbeda.


Blok Bangunan SOAP

Pesan SOAP adalah dokumen XML biasa yang berisi elemen-elemen berikut:

  • Elemen Amplop yang mengidentifikasi dokumen XML sebagai pesan SOAP
  • Elemen Header yang berisi informasi header
  • Elemen Tubuh yang berisi informasi panggilan dan respons
  • Elemen Kesalahan yang berisi kesalahan dan informasi status

Semua elemen di atas dideklarasikan dalam namespace default untuk amplop SOAP:

http://www.w3.org/2003/05/soap-envelope/

dan namespace default untuk pengkodean SOAP dan tipe data adalah:

http://www.w3.org/2003/05/soap-encoding


Aturan Sintaks

Berikut adalah beberapa aturan sintaks penting:

  • Pesan SOAP HARUS dikodekan menggunakan XML
  • Pesan SOAP HARUS menggunakan namespace SOAP Envelope
  • Pesan SOAP TIDAK boleh mengandung referensi DTD
  • Pesan SOAP TIDAK boleh berisi Instruksi Pemrosesan XML


Pesan SOAP Kerangka

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
...
</soap:Header>

<soap:Body>
...
  <soap:Fault>
  ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

Elemen Amplop SOAP

Elemen SOAP Envelope yang diperlukan adalah elemen root dari pesan SOAP. Elemen ini mendefinisikan dokumen XML sebagai pesan SOAP.

Contoh

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
  ...
  Message information goes here
  ...
</soap:Envelope>

xmlns:soap Namespace

Perhatikan ruang nama xmlns:soap pada contoh di atas. Itu harus selalu memiliki nilai: "http://www.w3.org/2003/05/soap-envelope/".

Namespace mendefinisikan Envelope sebagai SOAP Envelope.

Jika namespace yang berbeda digunakan, aplikasi menghasilkan kesalahan dan membuang pesan.


Atribut EncodingStyle

Atribut encodingStyle digunakan untuk mendefinisikan tipe data yang digunakan dalam dokumen. Atribut ini dapat muncul pada elemen SOAP apa pun, dan berlaku untuk konten elemen dan semua elemen turunan.

Pesan SOAP tidak memiliki penyandian default.

Sintaksis

soap:encodingStyle="URI"

Contoh

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
  ...
  Message information goes here
  ...
</soap:Envelope>

Elemen Judul SOAP

Elemen Header SOAP opsional berisi informasi khusus aplikasi (seperti otentikasi, pembayaran, dll) tentang pesan SOAP.

Jika elemen Header ada, itu harus menjadi elemen anak pertama dari elemen Envelope.

Catatan: Semua elemen turunan langsung dari elemen Header harus memenuhi syarat namespace.

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="https://www.w3schools.com/transaction/"
  soap:mustUnderstand="1">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

Contoh di atas berisi header dengan elemen "Trans", atribut "mustUnderstand" dengan nilai 1, dan nilai 234.

SOAP mendefinisikan tiga atribut dalam namespace default. Atribut tersebut adalah: mustUnderstand, actor, dan encodingStyle.

Atribut yang didefinisikan dalam SOAP Header mendefinisikan bagaimana penerima harus memproses pesan SOAP.


Atribut yang Harus Dipahami

Atribut SOAP mustUnderstand dapat digunakan untuk menunjukkan apakah entri header adalah wajib atau opsional untuk diproses oleh penerima.

Jika Anda menambahkan mustUnderstand="1" ke elemen turunan dari elemen Header, ini menunjukkan bahwa penerima yang memproses Header harus mengenali elemen tersebut. Jika penerima tidak mengenali elemen itu akan gagal saat memproses Header.

Sintaksis

soap:mustUnderstand="0|1"

Contoh

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="https://www.w3schools.com/transaction/"
  soap:mustUnderstand="1">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

Atribut aktor

Pesan SOAP dapat melakukan perjalanan dari pengirim ke penerima dengan melewati titik akhir yang berbeda di sepanjang jalur pesan. Namun, tidak semua bagian dari pesan SOAP mungkin ditujukan untuk titik akhir akhir, sebaliknya, mungkin ditujukan untuk satu atau lebih titik akhir di jalur pesan.

Atribut aktor SOAP digunakan untuk mengalamatkan elemen Header ke titik akhir tertentu.

Sintaksis

soap:actor="URI"

Contoh

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="https://www.w3schools.com/transaction/"
  soap:actor="https://www.w3schools.com/code/">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

Atribut EncodingStyle

Atribut encodingStyle digunakan untuk mendefinisikan tipe data yang digunakan dalam dokumen. Atribut ini dapat muncul pada elemen SOAP apa pun, dan itu akan berlaku untuk konten elemen itu dan semua elemen turunan.

Pesan SOAP tidak memiliki penyandian default.

Sintaksis

soap:encodingStyle="URI"

Elemen Tubuh SOAP

Elemen SOAP Body yang diperlukan berisi pesan SOAP aktual yang ditujukan untuk titik akhir akhir pesan.

Elemen turunan langsung dari elemen Badan SOAP mungkin memenuhi syarat namespace.

Contoh

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body>
  <m:GetPrice xmlns:m="https://www.w3schools.com/prices">
    <m:Item>Apples</m:Item>
  </m:GetPrice>
</soap:Body>

</soap:Envelope>

Contoh di atas meminta harga apel. Perhatikan bahwa m:GetPrice dan elemen Item di atas adalah elemen khusus aplikasi. Mereka bukan bagian dari namespace SOAP.

Respons SOAP dapat terlihat seperti ini:

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body>
  <m:GetPriceResponse xmlns:m="https://www.w3schools.com/prices">
    <m:Price>1.90</m:Price>
  </m:GetPriceResponse>
</soap:Body>

</soap:Envelope>


Elemen Kesalahan SOAP

Elemen kesalahan SOAP opsional digunakan untuk menunjukkan pesan kesalahan.

Elemen Kesalahan SOAP menyimpan kesalahan dan informasi status untuk pesan SOAP.

Jika ada elemen Fault, elemen tersebut harus muncul sebagai elemen turunan dari elemen Body. Elemen Fault hanya dapat muncul sekali dalam pesan SOAP.

Elemen Kesalahan SOAP memiliki sub elemen berikut:

Sub Element Description
<faultcode> A code for identifying the fault
<faultstring> A human readable explanation of the fault
<faultactor> Information about who caused the fault to happen
<detail>

Holds application specific error information related to the Body element

Kode Kesalahan SOAP

Nilai kode kesalahan yang ditentukan di bawah ini harus digunakan dalam elemen kode kesalahan saat menjelaskan kesalahan:

Error Description
VersionMismatch Found an invalid namespace for the SOAP Envelope element
MustUnderstand An immediate child element of the Header element, with the mustUnderstand attribute set to "1", was not understood
Client The message was incorrectly formed or contained incorrect information
Server There was a problem with the server so the message could not proceed

Protokol HTTP

HTTP berkomunikasi melalui TCP/IP. Klien HTTP terhubung ke server HTTP menggunakan TCP. Setelah membuat koneksi, klien dapat mengirim pesan permintaan HTTP ke server:

POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200

Server kemudian memproses permintaan dan mengirimkan respons HTTP kembali ke klien. Respons berisi kode status yang menunjukkan status permintaan:

200 OK
Content-Type: text/plain
Content-Length: 200

Pada contoh di atas, server mengembalikan kode status 200. Ini adalah kode sukses standar untuk HTTP.

Jika server tidak dapat memecahkan kode permintaan, itu bisa mengembalikan sesuatu seperti ini:

400 Bad Request
Content-Length: 0

Pengikatan SOAP

Spesifikasi SOAP mendefinisikan struktur pesan SOAP, bukan bagaimana mereka dipertukarkan. Kesenjangan ini diisi oleh apa yang disebut "SOAP Bindings". Ikatan SOAP adalah mekanisme yang memungkinkan pesan SOAP dipertukarkan secara efektif menggunakan protokol transport.

Kebanyakan implementasi SOAP menyediakan binding untuk protokol transport umum, seperti HTTP atau SMTP.

HTTP sinkron dan banyak digunakan. Permintaan HTTP SOAP menentukan setidaknya dua header HTTP: Content-Type dan Content-Length.

SMTP tidak sinkron dan digunakan dalam upaya terakhir atau kasus tertentu.

Implementasi Java dari SOAP biasanya menyediakan pengikatan khusus untuk protokol JMS (Java Messaging System).


Jenis konten

Header Tipe Konten untuk permintaan dan respons SOAP mendefinisikan tipe MIME untuk pesan dan pengkodean karakter (opsional) yang digunakan untuk badan XML permintaan atau respons.

Sintaksis

Content-Type: MIMEType; charset=character-encoding

Contoh

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Konten-Panjang

Header Content-Length untuk permintaan dan respons SOAP menentukan jumlah byte dalam isi permintaan atau respons.

Sintaksis

Content-Length: bytes

Contoh

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

Contoh SOAP

Pada contoh di bawah, permintaan GetStockPrice dikirim ke server. Permintaan memiliki parameter StockName, dan parameter Harga yang akan dikembalikan sebagai respons. Ruang nama untuk fungsi didefinisikan di "http://www.example.org/stock".

Permintaan SOAP:

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

Tanggapan SOAP:

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPriceResponse>
    <m:Price>34.5</m:Price>
  </m:GetStockPriceResponse>
</soap:Body>

</soap:Envelope>