Tutorial Layanan Web SOAP: Apa itu Protokol SOAP?
โก Ringkasan Cerdas
SOAP (Simple Object Access Protocol) adalah protokol berbasis XML untuk mengakses layanan web melalui HTTP. Sumber daya ini menjelaskan blok bangunan SOAP, struktur pesan, elemen amplop dan kesalahan, model komunikasi, dan contoh praktis layanan web ASMX.
Apa itu SOAP?
SOAP adalah protokol berbasis XML untuk mengakses layanan web melalui HTTP. Protokol 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 sebuah protokol atau, dengan kata lain, merupakan definisi tentang bagaimana layanan web saling berkomunikasi 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 saat ini, terdapat sejumlah besar aplikasi yang dibangun menggunakan berbagai bahasa pemrograman. Misalnya, bisa ada aplikasi web yang dirancang dalam 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 perangkat lunak SOAP berperan.
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 mengembangkanping Untuk layanan web berbasis SOAP, Anda memerlukan bahasa yang dapat digunakan agar layanan web dapat berkomunikasi dengan aplikasi klien. SOAP adalah media yang sempurna yang dikembangkan untuk mencapai tujuan ini. Protokol ini juga direkomendasikan oleh konsorsium W3C, yang merupakan badan pengatur untuk semua standar web.
- SOAP adalah protokol ringan yang digunakan untuk pertukaran data antar aplikasi. Perhatikan kata kunci 'cahayaKarena 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 independen platform dan juga independen sistem operasi. Jadi, protokol SOAP dapat bekerja dengan aplikasi berbasis bahasa pemrograman apa pun di kedua platform tersebut. Windows ke Linux platform.
- SOAP bekerja pada protokol HTTP โ SOAP beroperasi pada protokol HTTP, yang merupakan protokol standar yang digunakan oleh semua aplikasi web. Oleh karena itu, tidak diperlukan kustomisasi apa pun agar layanan web yang dibangun di atas protokol SOAP dapat berfungsi di World Wide Web.
Blok Bangunan SABUN
Spesifikasi SOAP mendefinisikan sesuatu yang dikenal sebagai โpesan sabunโ, yang kemudian dikirim ke layanan web dan aplikasi klien.
Diagram arsitektur SOAP di bawah menunjukkan berbagai blok penyusun Pesan SOAP.
Pesan SOAP tidak lain hanyalah dokumen XML belaka yang memiliki komponen di bawah ini.
- An Amplop Elemen 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.
- A Header Elemen yang berisi informasi header โ Elemen header dapat berisi informasi seperti kredensial otentikasi 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 berupa tipe sederhana seperti string dan angka, tetapi juga dapat berupa tipe objek kompleks.
Contoh layanan SOAP sederhana untuk tipe data kompleks ditunjukkan di bawah ini. Misalkan kita ingin mengirimkan tipe data terstruktur yang memiliki kombinasi "Nama Tutorial" dan "Tutorial". Descript"ion", maka kita akan mendefinisikan tipe kompleks seperti yang ditunjukkan di bawah ini. Tipe kompleks didefinisikan oleh tag elemen. Semua elemen yang dibutuhkan dari struktur tersebut 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>
A Body Elemen yang berisi informasi panggilan dan respons โ Elemen ini berisi data aktual yang perlu dikirim antara layanan web dan aplikasi pemanggil. Di bawah ini adalah contoh layanan web SOAP dari body SOAP yang sebenarnya bekerja 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 telah dibahas pada topik sebelumnya dalam tutorial SOAP ini, sebuah 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 perhatikan apa yang sebenarnya dilakukan oleh setiap elemennya.

- Seperti yang terlihat dari pesan SOAP di atas, bagian pertama dari pesan SOAP adalah elemen envelope yang digunakan untuk merangkum seluruh pesan SOAP.
- Elemen berikutnya adalah badan SOAP yang berisi rincian pesan sebenarnya.
- Pesan kami berisi layanan web yang bernama โGuru99WebServiceโ.
- The "Guru99Webserviceโ menerima parameter bertipe 'int' dan memiliki nama TutorialID.
Sekarang, pesan SOAP di atas akan diteruskan antara layanan web dan aplikasi klien.
Anda dapat melihat betapa bermanfaatnya informasi di atas bagi aplikasi klien. Pesan SOAP memberi tahu aplikasi klien apa nama layanan web tersebut, serta parameter apa yang diharapkan, dan juga tipe setiap parameter yang diterima oleh layanan web tersebut.
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 Envelope akar. Keberadaan elemen envelope mutlak diperlukan dalam sebuah pesan SOAP.
- 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.
Berikut adalah contoh API SOAP 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 sebuah permintaan dibuat ke layanan web SOAP, respons yang dikembalikan dapat berupa 2 bentuk, yaitu respons berhasil atau respons kesalahan. Jika respons berhasil, respons dari server akan selalu berupa pesan SOAP. Tetapi jika terjadi kesalahan SOAP, kesalahan tersebut akan dikembalikan sebagai kesalahan "HTTP 500".
Pesan SOAP Fault terdiri atas elemen-elemen berikut.
- <faultCode> โ Ini adalah kode yang menunjukkan kode kesalahan. Kode kesalahan dapat berupa salah satu dari nilai-nilai berikut:
- SOAP-ENV:VersionMismatch โ Ini terjadi ketika namespace yang tidak valid untuk elemen SOAP Envelope ditemukan.
- SOAP-ENV:MustUnderstand โ Elemen turunan langsung dari elemen Header, dengan atribut mustUnderstand disetel ke โ1โ, tidak dipahami.
- SOAP-ENV:Client โ โโPesan salah bentuk atau berisi informasi yang salah.
- SOAP-ENV:Server โ Ada masalah dengan server, sehingga pesan tidak dapat dilanjutkan.
- โ Ini adalah pesan teks yang memberikan penjelasan rinci tentang kesalahan tersebut.
- (Opsional) โ Ini adalah string teks yang menunjukkan siapa yang menyebabkan kesalahan.
- (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
Berikut adalah contoh pesan kesalahan. Kesalahan ini terjadi ketika klien mencoba menggunakan metode bernama TutorialID di kelas GetTutorial. Pesan kesalahan di bawah ini akan muncul jika metode tersebut tidak ada di kelas yang didefinisikan.
<?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:
Saat Anda menjalankan kode di atas, akan muncul kesalahan 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.
Dalam tutorial API SOAP ini, mari kita perhatikan diagram di bawah ini untuk melihat bagaimana komunikasi ini bekerja. Dalam contoh ini, mari kita asumsikan server menyediakan layanan web yang memiliki 2 metode, yaitu:
- Dapatkan Karyawan โ Ini akan mendapatkan semua detail karyawan.
- Set Karyawan โ Ini akan menetapkan nilai detail seperti hutang karyawan, gaji, dll. sesuai dengan ketentuan.
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 di atas memiliki keterbatasan serius sebagai berikut:
- Tidak Mandiri Bahasa โ Server yang menjalankan metode tersebut akan menggunakan bahasa pemrograman tertentu, dan biasanya panggilan ke server hanya akan menggunakan bahasa pemrograman tersebut.
- 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.
- 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 berikut.
- Klien akan memformat informasi mengenai panggilan prosedur dan argumen apa pun ke dalam pesan SOAP dan mengirimkannya ke server sebagai bagian dari permintaan HTTP. Proses pengemasan data ke dalam pesan SOAP ini dikenal sebagai menyusun.
- Server kemudian akan menguraikan pesan yang dikirim oleh klien, melihat apa yang diminta klien, dan kemudian mengirimkan respons yang sesuai kembali ke klien sebagai pesan SOAP. Praktik penguraian pesan (unwrap)ping Permintaan yang dikirim oleh klien dikenal sebagai Demarshalling.
Contoh SABUN Praktis
Sekarang dalam hal ini SoapUI Dalam tutorial ini, mari kita lihat contoh SOAP praktis. Mungkin salah satu cara terbaik untuk melihat bagaimana pesan SOAP dihasilkan adalah dengan melihat langsung layanan web tersebut beroperasi.
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 tersebut. Layanan web ini akan dihosting di sebuah 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 apa yang dikirimkan 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.
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,
- Pastikan untuk memilih terlebih dahulu C# Templat web untuk aplikasi web ASP.NET. Proyek harus bertipe ini agar dapat membuat proyek layanan SOAP. Dengan memilih opsi ini, Visual Studio kemudian akan melakukan langkah-langkah yang diperlukan untuk menambahkan file yang dibutuhkan oleh aplikasi berbasis web apa pun.
- Berikan nama untuk proyek Anda, yang dalam kasus kami diberi nama webservice.asmx. Kemudian pastikan untuk menentukan lokasi tempat file proyek akan disimpan.
Setelah selesai, Anda akan melihat file proyek yang dibuat di penjelajah solusi Anda di Visual Studio 2013.
Langkah 3) Pada langkah ini, kita akan menambahkan file layanan web ke proyek kita.
- Pertama, klik kanan pada file proyek seperti yang ditunjukkan di bawah ini.
- Setelah Anda mengklik kanan file proyek, Anda dapat memilih opsi โTambah->Layanan Web (ASMX)โ untuk menambahkan file layanan web. Cukup berikan nama Tutorial Service untuk nama file layanan web.
Langkah 4) Tambahkan kode berikut ke file asmx Layanan Tutorial Anda.
Code Penjelasan:
- 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.
- 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.
- Di sini [WebMethod] dikenal sebagai atribut yang menjelaskan sebuah fungsi. Langkah selanjutnya membuat fungsi yang disebut โGuru99WebServiceโ, tetapi dengan menyertakan langkah penambahan atribut [WebMethod] ini, dipastikan bahwa metode ini dapat dipanggil oleh aplikasi klien. Jika atribut ini tidak ada, maka metode tersebut tidak akan pernah dapat dipanggil oleh aplikasi klien.
- Di sini kita mendefinisikan sebuah fungsi yang disebut 'Guru99WebService' yang akan digunakan untuk mengembalikan string ke aplikasi klien yang memanggilnya. Fungsi ini adalah layanan web yang dapat dipanggil oleh aplikasi klien mana pun.
- Kita menggunakan pernyataan return untuk mengembalikan string โIni adalah sebuah Guru99 Layanan webโ ke aplikasi klien.
Jika kode berhasil dieksekusi, Output berikut akan ditampilkan saat Anda menjalankan kode di peramban.
Keluaran:
- Output tersebut dengan jelas menunjukkan bahwa nama layanan web kita adalah โGuru"99 Web Service", yang merupakan hasil dari pemberian nama untuk layanan web kami.
- Kita juga dapat melihat bahwa kita dapat memanggil layanan web. Jika kita mengklik tombol Invoke, kita akan mendapatkan respons di bawah ini di browser web.
Hasil di atas:
- Hal ini jelas menunjukkan bahwa dengan memanggil metode web, string โIni adalah sebuah Guru"Layanan web 99" 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.
Code Penjelasan:
- Bagian pertama dari pesan SOAP adalah elemen amplop, yang telah dibahas di bab-bab sebelumnya. Ini adalah elemen pembungkus yang ada di setiap pesan SOAP.
- Badan SOAP adalah elemen berikutnya dan berisi rincian sesungguhnya dari pesan SOAP.
- Bagian ketiga adalah elemen yang menentukan bahwa kita ingin memanggil layanan yang disebut 'Guru99WebService'.
<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>
Code Penjelasan:
- Bagian pertama dari pesan SOAP adalah elemen amplop, yang telah dibahas di bab-bab sebelumnya. Ini adalah elemen pembungkus yang ada di setiap pesan SOAP.
- Badan SOAP adalah elemen berikutnya dan berisi rincian sesungguhnya dari pesan SOAP.
- Bagian menarik yang akan Anda lihat sekarang adalah atribut 'string'. Ini memberi tahu aplikasi klien bahwa layanan web yang dipanggil mengembalikan objek bertipe string. Ini sangat berguna karena jika tidak, aplikasi klien tidak akan tahu apa yang dikembalikan oleh layanan web tersebut.














