Tutorial Layanan Web SOAP: Apa itu Protokol SOAP? CONTOH

Apa itu SOAP?

SOAP adalah protokol berbasis XML untuk mengakses layanan web melalui HTTP. Ini memiliki beberapa spesifikasi yang dapat digunakan di semua aplikasi.

SOAP dikenal sebagai Simple Object Access Protocol, tetapi kemudian disingkat menjadi SOAP v1.2. SOAP adalah protokol atau dengan kata lain merupakan definisi tentang bagaimana layanan web berkomunikasi satu sama lain atau berkomunikasi dengan aplikasi klien yang memanggilnya.

SOAP dikembangkan sebagai bahasa perantara sehingga aplikasi yang dibangun pada berbagai bahasa pemrograman dapat berkomunikasi dengan mudah satu sama lain dan menghindari upaya pengembangan yang ekstrim.

Pengenalan SABUN

Di dunia sekarang ini, ada banyak sekali aplikasi yang dibangun dengan bahasa pemrograman berbeda. Misalnya, mungkin ada aplikasi web yang dirancang Java, satu lagi di .Net dan satu lagi di PHP.

Pertukaran data antar aplikasi sangat penting dalam dunia jaringan saat ini. Namun, pertukaran data antara aplikasi heterogen ini akan menjadi rumit. Begitu pula dengan kompleksitas kode untuk melakukan pertukaran data ini.

Salah satu metode yang digunakan untuk mengatasi kompleksitas ini adalah dengan menggunakan XML (Extensible Markup Language) sebagai bahasa perantara untuk pertukaran data antar aplikasi.

Setiap bahasa pemrograman dapat memahami bahasa markup XML. Oleh karena itu, XML digunakan sebagai media dasar pertukaran data.

Namun tidak ada spesifikasi standar mengenai penggunaan XML di semua bahasa pemrograman untuk pertukaran data. Di sinilah peran perangkat lunak SOAP.

SOAP dirancang untuk bekerja dengan XML melalui HTTP dan memiliki semacam spesifikasi yang dapat digunakan di semua aplikasi. Kami akan membahas lebih lanjut tentang protokol SOAP di bab-bab berikutnya.

Kelebihan SOAP

SOAP adalah protokol yang digunakan untuk pertukaran data antar aplikasi. Berikut adalah beberapa alasan mengapa SOAP digunakan.

  • Saat mengembangkan layanan Web berbasis SOAP, Anda perlu memiliki beberapa bahasa yang dapat digunakan layanan web untuk berkomunikasi dengan aplikasi klien. SOAP adalah media sempurna yang dikembangkan untuk mencapai tujuan ini. Protokol ini juga direkomendasikan oleh konsorsium W3C yang merupakan badan pengelola semua standar web.
  • SOAP adalah protokol ringan yang digunakan untuk pertukaran data antar aplikasi. Perhatikan kata kunci 'cahaya.' Karena pemrograman SOAP didasarkan pada bahasa XML, yang merupakan bahasa pertukaran data yang ringan, maka SOAP sebagai protokol juga termasuk dalam kategori yang sama.
  • SOAP dirancang agar bersifat independen terhadap platform dan juga dirancang agar bersifat independen terhadap sistem operasi. Jadi protokol SOAP dapat menjalankan aplikasi berbasis bahasa pemrograman apa pun di kedua platform. Windows dan Linux platform.
  • Ia bekerja pada protokol HTTP –SOAP bekerja pada protokol HTTP, yang merupakan protokol default yang digunakan oleh semua aplikasi web. Oleh karena itu, tidak ada penyesuaian yang diperlukan untuk menjalankan layanan web yang dibangun di atas protokol SOAP agar dapat bekerja di World Wide Web.

Blok Bangunan SABUN

Spesifikasi SOAP mendefinisikan sesuatu yang dikenal sebagai “pesan sabun” yaitu apa yang dikirim ke layanan web dan aplikasi klien.

Diagram arsitektur SOAP di bawah menunjukkan berbagai blok penyusun Pesan SOAP.

Blok Bangunan SABUN
Blok Penyusun Pesan SOAP

Pesan SOAP tidak lain hanyalah dokumen XML belaka yang memiliki komponen di bawah ini.

  • Elemen Envelope yang mengidentifikasi dokumen XML sebagai pesan SOAP – Ini adalah bagian yang berisi pesan SOAP dan digunakan untuk merangkum semua detail dalam pesan SOAP. Ini adalah elemen akar dalam pesan SOAP.
  • Elemen Header yang berisi informasi header – Elemen header dapat berisi informasi seperti kredensial autentikasi yang dapat digunakan oleh aplikasi pemanggil. Elemen ini juga dapat berisi definisi tipe kompleks yang dapat digunakan dalam pesan SOAP. Secara default, pesan SOAP dapat berisi parameter yang dapat berupa tipe sederhana seperti string dan angka, tetapi juga dapat berupa tipe objek kompleks.

Contoh layanan SOAP sederhana dari tipe kompleks ditunjukkan di bawah ini.

Misalkan kita ingin mengirimkan tipe data terstruktur yang memiliki kombinasi “Nama Tutorial” dan “Tutorial Description,” maka kita akan mendefinisikan tipe kompleks seperti yang ditunjukkan di bawah ini.

Tipe kompleks didefinisikan oleh tag elemen Semua elemen struktur yang dibutuhkan beserta tipe datanya masing-masing kemudian didefinisikan dalam koleksi tipe kompleks.

<xsd:complexType>     
 <xsd:sequence>       
 	<xsd:element name="Tutorial Name" type="string"/>         
  	<xsd:element name="Tutorial Description"  type="string"/>
  </xsd:sequence>
</xsd:complexType>
  • Elemen Body yang berisi informasi panggilan dan respons – Elemen ini berisi data aktual yang perlu dikirim antara layanan web dan aplikasi pemanggil. Berikut adalah contoh layanan web SOAP dari body SOAP yang benar-benar berfungsi pada tipe kompleks yang didefinisikan di bagian header. Berikut adalah respons dari Nama Tutorial dan Tutorial Description yang dikirim ke aplikasi pemanggil yang memanggil layanan web ini.
<soap:Body>
   <GetTutorialInfo>
		<TutorialName>Web Services</TutorialName> 
		<TutorialDescription>All about web services</TutorialDescription> 
   </GetTutorialInfo>
</soap:Body>

Struktur Pesan SOAP

Satu hal yang perlu diperhatikan adalah pesan SOAP biasanya dibuat secara otomatis oleh layanan web saat dipanggil.

Setiap kali aplikasi klien memanggil suatu metode dalam layanan web, layanan web tersebut secara otomatis akan membuat pesan SOAP berisi rincian data yang diperlukan yang akan dikirim dari layanan web ke aplikasi klien.

Seperti yang dibahas pada topik sebelumnya dari tutorial SOAP ini, Pesan SOAP sederhana memiliki elemen-elemen berikut –

  • Elemen Amplop
  • Elemen header dan
  • Elemen tubuh
  • Elemen Kesalahan (Opsional)

Mari kita lihat contoh pesan SOAP sederhana di bawah ini dan lihat elemen apa yang sebenarnya berfungsi.

Struktur Pesan SOAP

Struktur Pesan SOAP
  1. Seperti yang terlihat dari pesan SOAP di atas, bagian pertama dari pesan SOAP adalah elemen envelope yang digunakan untuk merangkum seluruh pesan SOAP.
  2. Elemen berikutnya adalah badan SOAP yang berisi rincian pesan sebenarnya.
  3. Pesan kami berisi layanan web yang bernama "Guru99WebService".
  4. “Guru99Webservice” menerima parameter tipe 'int' dan memiliki nama TutorialID.

Sekarang, pesan SOAP di atas akan diteruskan antara layanan web dan aplikasi klien.

Anda dapat melihat betapa bergunanya informasi di atas bagi aplikasi klien. Pesan SOAP memberitahu aplikasi klien apa nama layanan Web, dan juga parameter apa yang diharapkan dan juga jenis setiap parameter yang diambil oleh layanan web.

Elemen Amplop SABUN

Bagian pertama dari blok penyusunnya adalah SOAP Envelope.

Amplop SOAP digunakan untuk merangkum semua detail yang diperlukan dari pesan SOAP, yang dipertukarkan antara layanan web dan aplikasi klien.

Elemen amplop SOAP digunakan untuk menunjukkan awal dan akhir pesan SOAP. Hal ini memungkinkan aplikasi klien yang memanggil layanan web mengetahui kapan pesan SOAP berakhir.

Hal-hal berikut dapat diperhatikan pada elemen amplop SOAP.

  • Setiap pesan SOAP harus memiliki elemen root Envelope. Pesan SOAP wajib memiliki elemen amplop.
  • Setiap elemen Amplop harus memiliki setidaknya satu elemen badan sabun.
  • Jika elemen Envelope berisi elemen header, maka elemen tersebut tidak boleh berisi lebih dari satu, dan harus muncul sebagai anak pertama dari Envelope, sebelum elemen body.
  • Amplop berubah ketika versi SOAP berubah.
  • 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 Ketidakcocokan Versi jika menerima pesan yang tidak menyertakan namespace amplop v1.2.

Di bawah ini adalah contoh SOAP API versi 1.2 dari elemen amplop 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:Body>
        <Guru99WebService xmlns="http://tempuri.org/">
                  <TutorialID>int</TutorialID>
                </Guru99WebService>
          </soap:Body>
</SOAP-ENV:Envelope>

Pesan Kesalahan

Ketika permintaan dibuat ke layanan web SOAP, respons yang dikembalikan dapat berupa 2 bentuk yaitu respons berhasil atau respons kesalahan. Ketika sukses dihasilkan, respon dari server akan selalu berupa pesan SOAP. Namun jika kesalahan SOAP dihasilkan, kesalahan tersebut dikembalikan sebagai kesalahan “HTTP 500”.

Pesan SOAP Fault terdiri atas elemen-elemen berikut.

  1. – Ini adalah kode yang menunjukkan kode kesalahan. Kode kesalahan dapat berupa nilai apa pun di bawah ini
    1. SOAP-ENV:VersionMismatch – Ini terjadi ketika namespace yang tidak valid untuk elemen SOAP Envelope ditemukan.
    2. SOAP-ENV:MustUnderstand – Elemen turunan langsung dari elemen Header, dengan atribut mustUnderstand disetel ke “1”, tidak dipahami.
    3. SOAP-ENV:Client – ​​Pesan salah bentuk atau berisi informasi yang salah.
    4. SOAP-ENV:Server – Ada masalah dengan server, sehingga pesan tidak dapat dilanjutkan.
  2. – Ini adalah pesan teks yang memberikan penjelasan rinci tentang kesalahan tersebut.
  3. (Opsional)– Ini adalah string teks yang menunjukkan siapa yang menyebabkan kesalahan.
  4. (Opsional) – Ini adalah elemen untuk pesan kesalahan khusus aplikasi. Jadi aplikasi mungkin memiliki pesan kesalahan spesifik untuk skenario logika bisnis yang berbeda.

Contoh Pesan Kesalahan

Contoh pesan kesalahan diberikan di bawah ini. Kesalahan dihasilkan jika skenario dimana klien mencoba menggunakan metode yang disebut TutorialID di kelas GetTutorial.

Pesan kesalahan di bawah ini dihasilkan jika metode tersebut tidak ada di kelas yang ditentukan.

<?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 (GetTutorialID) in class (GetTutorial)
         </faultstring>
    </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Keluaran:

Ketika Anda menjalankan kode di atas, maka akan muncul error seperti “Gagal menemukan metode (GetTutorialID) di kelas (GetTutorial)”

Model Komunikasi SABUN

Semua komunikasi dengan SOAP dilakukan melalui protokol HTTP. Sebelum SOAP, banyak layanan web menggunakan gaya RPC (Remote Procedure Call) standar untuk komunikasi. Ini adalah jenis komunikasi yang paling sederhana, namun memiliki banyak keterbatasan.

Sekarang dalam tutorial SOAP API ini, mari pertimbangkan diagram di bawah ini untuk melihat cara kerja komunikasi ini. Dalam contoh ini, anggaplah server menghosting layanan web yang menyediakan 2 metode sebagai

  • Dapatkan Karyawan – Ini akan mendapatkan semua detail Karyawan
  • Set Karyawan – Ini akan mengatur nilai rincian seperti departemen karyawan, gaji, dll. sesuai dengan itu.

Dalam komunikasi gaya RPC normal, klien hanya akan memanggil metode dalam permintaannya dan mengirimkan parameter yang diperlukan ke server, dan server kemudian akan mengirimkan respons yang diinginkan.

Model Komunikasi SABUN

Model komunikasi di atas mempunyai keterbatasan serius

  1. Tidak Mandiri Bahasa – Server yang menghosting metode tersebut akan menggunakan bahasa pemrograman tertentu dan biasanya panggilan ke server akan menggunakan bahasa pemrograman tersebut saja.
  2. Bukan protokol standar – Ketika panggilan dilakukan melalui prosedur jarak jauh, panggilan tersebut tidak dilakukan melalui protokol standar. Ini merupakan masalah karena sebagian besar komunikasi melalui web harus dilakukan melalui protokol HTTP.
  3. Firewall – Karena panggilan RPC tidak melalui protokol normal, port terpisah harus dibuka di server agar klien dapat berkomunikasi dengan server. Biasanya semua firewall akan memblokir lalu lintas semacam ini, dan umumnya banyak konfigurasi yang diperlukan untuk memastikan bahwa komunikasi semacam ini antara klien dan server akan berfungsi.

Untuk mengatasi semua keterbatasan yang disebutkan di atas, SOAP kemudian akan menggunakan model komunikasi di bawah ini

Model Komunikasi SABUN

  1. Klien akan memformat informasi mengenai pemanggilan prosedur dan argumen apa pun ke dalam pesan SOAP dan mengirimkannya ke server sebagai bagian dari permintaan HTTP. Proses merangkum data menjadi pesan SOAP dikenal sebagai Marshall.
  2. Server kemudian akan membuka bungkusan pesan yang dikirim oleh klien, melihat apa yang diminta klien dan kemudian mengirimkan respons yang sesuai kembali ke klien sebagai pesan SOAP. Praktek membuka bungkus permintaan yang dikirim oleh klien dikenal sebagai Demarshalling.

Contoh SABUN Praktis

Sekarang dalam tutorial SoapUI ini, mari kita lihat contoh praktis SOAP,

Mungkin salah satu cara terbaik untuk melihat bagaimana pesan SOAP dihasilkan adalah dengan melihat layanan web beraksi.

Topik ini akan membahas penggunaan MicrosoftKerangka kerja .Net untuk membangun layanan web ASMX. Jenis layanan web ini mendukung SOAP versi 1.1 dan versi 1.2.

Layanan web ASMX secara otomatis menghasilkan Bahasa Definisi Layanan Web (WSDL) dokumen. Dokumen WSDL ini diperlukan oleh aplikasi klien pemanggil agar aplikasi mengetahui apa yang mampu dilakukan layanan web.

Dalam contoh kita, kita akan membuat layanan web sederhana, yang akan digunakan untuk mengembalikan string ke aplikasi yang memanggil layanan web.

Layanan web ini akan dihosting di Asp.Net aplikasi web. Kami kemudian akan memanggil layanan web dan melihat hasil yang dikembalikan oleh layanan web.

Visual Studio juga akan menunjukkan kepada kita pesan SOAP yang diteruskan antara layanan web dan aplikasi pemanggil.

Prasyarat pertama untuk menyiapkan aplikasi layanan Web kita dapat dilakukan dengan mengikuti langkah-langkah di bawah ini.

Pastikan Anda telah menginstal Visual Studio 2013 di sistem Anda untuk contoh ini.

Langkah 1) Langkah pertama adalah membuat aplikasi web ASP.Net yang kosong. Dari Visual Studio 2013, klik opsi menu File->New project.

Contoh Pesan SOAP

Setelah Anda mengeklik opsi New Project, Visual Studio akan memberikan kotak dialog lain untuk memilih jenis proyek dan memberikan rincian yang diperlukan tentang proyek tersebut. Hal ini dijelaskan pada langkah berikutnya.

Langkah 2) Pada langkah ini,

  1. Pastikan untuk memilih terlebih dahulu C# templat web aplikasi web ASP.NET. Proyek harus berjenis ini agar dapat membuat proyek layanan SOAP. Dengan memilih opsi ini, Visual Studio akan menjalankan langkah-langkah yang diperlukan untuk menambahkan berkas yang dibutuhkan oleh aplikasi berbasis web mana pun.
  2. Berikan nama untuk proyek Anda yang dalam kasus kami diberikan sebagai webservice.asmx. Kemudian pastikan untuk memberikan lokasi dimana file proyek akan disimpan.

Contoh Pesan SOAP

Setelah selesai, Anda akan melihat berkas proyek yang dibuat di penjelajah solusi Anda di Visual Studio 2013.

Contoh Pesan SOAP

Langkah 3) Pada langkah ini,

Kami akan menambahkan file layanan Web ke proyek kami

  1. Pertama Klik kanan pada file proyek seperti yang ditunjukkan di bawah ini

Contoh Pesan SOAP

  1. Setelah Anda mengklik kanan pada file proyek, Anda memiliki kesempatan untuk memilih opsi “Tambah->Layanan Web(ASMX) untuk menambahkan file layanan web. Cukup berikan nama Layanan Tutorial untuk file nama layanan web.

Contoh Pesan SOAP

Langkah 4) Tambahkan kode berikut ke file asmx Layanan Tutorial Anda.

Contoh Pesan SOAP

Penjelasan Kode:

  1. Baris kode ini memberikan nama untuk file layanan web Anda. Ini merupakan langkah penting karena memberi jalan bagi aplikasi klien untuk memanggil layanan web melalui nama layanan web.
  2. Biasanya file kelas digunakan untuk merangkum fungsionalitas layanan web. Jadi file kelas akan memiliki definisi semua metode web yang akan menyediakan beberapa fungsionalitas pada aplikasi klien.
  3. Di sini [WebMethod] dikenal sebagai atribut yang mendeskripsikan suatu fungsi. Langkah selanjutnya membuat fungsi yang disebut “Guru99WebService”, tetapi dengan dimasukkannya langkah ini menambahkan atribut [WebMethod] memastikan bahwa metode ini dapat dipanggil oleh aplikasi klien. Jika atribut ini tidak ada, maka metode tersebut tidak akan pernah bisa dipanggil oleh aplikasi klien.
  4. Di sini kita mendefinisikan fungsi yang disebut 'Guru99WebService' yang akan digunakan untuk mengembalikan string ke aplikasi klien pemanggil. Fungsi ini adalah layanan web yang dapat dipanggil oleh aplikasi klien apa pun.
  5. Kami menggunakan pernyataan return untuk mengembalikan string “Ini adalah layanan Web Guru99” ke aplikasi klien.

Jika kode berhasil dieksekusi, Output berikut akan ditampilkan saat Anda menjalankan kode di peramban.

Keluaran:

Contoh Pesan SOAP

  • Outputnya jelas menunjukkan bahwa nama web service kita adalah “Guru99 Web Service” yang merupakan hasil pemberian nama pada web service kita.
  • Kita juga dapat melihat bahwa kita dapat memanggil layanan web. Jika kita mengklik tombol Panggil, kita akan mendapatkan respon di bawah ini di browser web.

Contoh Pesan SOAP

Keluaran di atas,

  • Ini jelas menunjukkan bahwa dengan memanggil metode web, string “Ini adalah layanan Web Guru99” dikembalikan.
  • Visual Studio juga memungkinkan Anda untuk melihat permintaan dan respons pesan SOAP yang dihasilkan saat layanan web di atas dipanggil.

Permintaan SOAP yang dihasilkan ketika layanan web dipanggil ditunjukkan di bawah ini.

Contoh Pesan SOAP

Penjelasan Kode:

  1. Bagian pertama dari pesan SOAP adalah elemen amplop yang telah dibahas pada bab sebelumnya. Ini adalah elemen enkapsulasi yang ada di setiap pesan SOAP.
  2. Badan SOAP adalah elemen berikutnya dan berisi rincian sesungguhnya dari pesan SOAP.
  3. Bagian ketiga adalah elemen yang menentukan bahwa kita ingin memanggil layanan yang disebut 'Guru99WebService.'

Contoh Pesan SOAP

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  
    <soap:Body>
      
        <Guru99WebServiceResponse xmlns="http://tempuri.org/">
          
            <Guru99WebServiceResult>string</Guru99WebServiceResult>
          
        </Guru99WebServiceResponse>
    </soap:Body>
</soap:Envelope>

Penjelasan Kode:

  1. Bagian pertama dari pesan SOAP adalah elemen amplop yang telah dibahas pada bab sebelumnya. Ini adalah elemen enkapsulasi yang ada di setiap pesan SOAP.
  2. Badan SOAP adalah elemen berikutnya dan berisi rincian sesungguhnya dari pesan SOAP.
  3. Bagian menarik yang akan Anda lihat sekarang adalah atribut 'string'. Atribut ini memberi tahu aplikasi klien bahwa layanan web yang dipanggil mengembalikan objek bertipe string. Hal ini sangat berguna karena jika tidak, aplikasi klien tidak akan tahu apa yang dikembalikan oleh layanan web.

Ringkasan

  • SOAP adalah protokol yang digunakan untuk pertukaran data antar aplikasi yang dibangun pada aplikasi yang berbeda bahasa pemrograman.
  • SOAP dibangun berdasarkan spesifikasi XML dan bekerja dengan protokol HTTP. Ini membuatnya sempurna untuk digunakan dalam aplikasi web.
  • Blok penyusun SOAP terdiri dari Pesan SOAP. Setiap pesan SOAP terdiri dari elemen envelope, header, dan elemen body.
  • Elemen envelope adalah elemen wajib dalam pesan SOAP dan digunakan untuk merangkum semua data dalam pesan SOAP.
  • Elemen header dapat digunakan untuk memuat informasi seperti informasi autentikasi atau definisi tipe data kompleks.
  • Elemen body adalah elemen utama yang berisi definisi metode web beserta informasi parameter apa pun jika diperlukan.