About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • PHP
  • /
  • Implementasi Web Service Dengan SOAP Menggunakan NuSOAP (Bag 1)
PHP

Implementasi Web Service Dengan SOAP Menggunakan NuSOAP (Bag 1)

Beberapa waktu yang lalu pembahasan mengenai web service pernah saya tulis di blog tutorial ini. Dalam artikel tersebut dicontohkan secara sederhana bagaimana cara kerja web service yang digunakan untuk integrasi (pertukaran informasi) antara beberapa buah sistem. Akan tetapi dalam penerapannya, web service sendiri sudah ada protokol standard yang biasa digunakan yaitu SOAP (Simple Object Access Protocol) atau WSDL (Web Service Definition Language). SOAP dan WSDL, oleh wikipedia dijelaskan bahwa keduanya sama-sama menggunakan XML sebagai format pertukaran informasi/komunikasi antar sistem melalui HTTP atau SMTP.

Adapun struktur XML dalam SOAP selama proses transaksi antar sistem baik dalam proses call/request maupun response dalam web service, digambarkan pada gambar berikut ini:

Struktur XML SOAP

Untuk mengimplementasikan web service dengan menggunakan SOAP saat ini adalah mudah, karena kita bisa menggunakan NuSOAP. NuSOAP, yang dibuat oleh NuSphere dan Dietrich Ayala ini, merupakan kumpulan class yang khusus digunakan untuk mengimplementasikan web server baik menggunakan protokol SOAP maupun WSDL. Namun dalam pembahasan kali ini sementara hanya akan dibahas khusus implementasi SOAP nya saja. Anda bisa mengunduh NuSOAP ini di sourceforge. Setelah Anda unduh, dan diekstrak filenya, Anda akan mendapatkan sebuah folder bernama /lib. Di dalam folder /lib inilah kumpulan-kumpulan class ini tersimpan dan kita tinggal memanfaatkannya saja.

OK, dalam artikel ini saya akan contohkan implementasi SOAP dengan NuSOAP pada studi kasus sederhana yaitu untuk operasi aritmatika. Adapun gambaran contohnya sebagai berikut. Di komputer A, dalam hal ini bertindak sebagai client akan dibuat sebuah script untuk menjumlahkan dua bilangan. Namun untuk mendapatkan hasil penjumlahannya, komputer A ini akan meminta bantuan komputer B. Dengan demikian komputer A ini nantinya akan melakukan call/request ke komputer B untuk menjumlahkan 2 bilangan, lalu komputer B yang bertindak sebagai server ini menghasilkan response berupa hasil penjumlahannya. Hasil response ini kemudian dibaca oleh komputer A, lalu ditampilkan hasilnya di komputer A.

Bagaimana cara mengimplementasikan kasus di atas? Ini dia caranya. Pertama, pastikan Anda sudah mendownload NuSOAP nya untuk mendapatkan folder /lib nya. Selanjutnya folder /lib ini sama-sama diletakkan di komputer A maupun komputer B. Nah.. selanjutnya, kita siapkan script PHP di komputer B yang nantinya berfungsi untuk menangkap call dari komputer A dan selanjutnya memberikan response. Ini dia scriptnya:

server.php

<?php

// mengincludekan file berisi class nusoap
require_once('lib/nusoap.php');
// instansiasi class soap untuk server
$server = new soap_server;
// meregistrasi 'method' untuk proses penjumlahan dengan nama 'jumlahkan'
$server->register('jumlahkan');

// detil isi method 'jumlahkan'
function jumlahkan($x, $y) {
    return $x + $y;
}

// memberikan response service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

Keterangan:
Setiap method yang dibuat, nama method harus diregisterkan dengan perintah

$server->register('nama method');

Langkah berikutnya, kita tulis script yang nantinya diletakkan di komputer A di sisi client.

client.php

<?php

require_once('lib/nusoap.php');

// dua bilangan yang akan dijumlahkan
$bil1 = 10;
$bil2 = 25;

// instansiasi obyek untuk class nusoap client
$client = new nusoap_client('http://nomor_ip_komputerB/../server.php');
// proses call method 'jumlahkan' di script server.php yang ada di komputer B
$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));

echo "<p>Hasil penjumlahan ".$bil1." dan ".$bil2." adalah ".$result."</p>";

?>

Jika script client.php ini dijalankan di komputer client (dalam hal ini komputer A), maka akan menghasilkan output sbb:

 photo img-soap-01_zps16590b86.jpg

Anda bisa mengimplementasikan NuSOAP ini dengan komputer di rumah (localhost) sebagai client dan server hosting. Jadi Anda upload script server.php nya ke hosting dan juga folder /lib nya. Sedangkan script client.php Anda simpan di localhost. Kemudian pada proses instansiasi

$client = new nusoap_client('http://nomor_ip_komputerB/../server.php');

Anda tinggal tentukan URL nya yang diarahkan ke script server.php di server hosting.

Kemudian bagaimana jika, dalam script server.php nya ingin dibuat lebih dari satu method, ya cukup buat saja beberapa method yang diinginkan dan jangan lupa registerkan. Contoh:

server.php

<?php

// mengincludekan file berisi class nusoap
require_once('lib/nusoap.php');
// instansiasi class soap untuk server
$server = new soap_server;
// meregistrasi 'method' untuk proses penjumlahan dengan nama 'jumlahkan' dan 'kurangi'
$server->register('jumlahkan');
$server->register('kurangi');

// detil isi method 'jumlahkan'
function jumlahkan($x, $y) {
    return $x + $y;
}

// detil isi method 'kurangi'
function kurangi($x, $y) {
    return $x - $y;
}


// memberikan response service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

dan berikut ini contoh script client.php nya.

client.php

<?php

require_once('lib/nusoap.php');

// dua bilangan yang akan dijumlahkan atau dikurangi
$bil1 = 10;
$bil2 = 25;

// instansiasi obyek untuk class nusoap client
$client = new nusoap_client('http://nomor_ip_komputerB/../server.php');
// proses call method 'jumlahkan' di script server.php yang ada di komputer B
$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));
echo "<p>Hasil penjumlahan ".$bil1." dan ".$bil2." adalah ".$result."</p>";

// proses call method 'kurangi' di script server.php yang ada di komputer B
$result = $client->call('kurangi', array('x' => $bil1, 'y' => $bil2));
echo "<p>Hasil pengurangan ".$bil1." dan ".$bil2." adalah ".$result."</p>";

?>

Jika Anda penasaran bagaimana format XML yang dikirim ke server pada proses call/request untuk kasus di atas, Anda bisa tambahkan dengan perintah

$client->request;

Contoh:

client.php

<?php

require_once('lib/nusoap.php');

// dua bilangan yang akan dijumlahkan atau dikurangi
$bil1 = 10;
$bil2 = 25;

// instansiasi obyek untuk class nusoap client
$client = new nusoap_client('http://rosihanari.net/nusoap/server.php');
// proses call method 'jumlahkan' di script server.php yang ada di komputer B
$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));

// menampilkan format XML dalam proses call/request
echo $client->request;

?>

Setelah Anda jalankan script client.php di atas, kemudian melihat sourcenya di browser maka Anda akan dapatkan format XML SOAP nya sbb:

 photo img-soap-02_zps2c48c390.jpg

Demikian juga apabila Anda ingin melihat format XML response yang dikirimkan oleh server, yaitu dengan menambahkan perintah:

$client->response;

Contoh:

client.php

<?php

require_once('lib/nusoap.php');

// dua bilangan yang akan dijumlahkan atau dikurangi
$bil1 = 10;
$bil2 = 25;

// instansiasi obyek untuk class nusoap client
$client = new nusoap_client('http://rosihanari.net/nusoap/server.php');
// proses call method 'jumlahkan' di script server.php yang ada di komputer B
$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));

// menampilkan format XML hasil response
echo $client->response;

?>

dan bentuk format XML response dari server adalah sbb:

 photo img-soap-03_zpsdaf84431.jpg

Mudah dan menarik bukan SOAP nya? Insya Allah untuk artikel mendatang akan saya paparkan studi kasus implementasi SOAP dengan NuSOAP yang return value dari method nya berupada data array/multiple data. Biasanya kasus ini diterapkan untuk proses lookup data yang ada di server.

 


Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply