Implementasi Web Service Dengan SOAP Menggunakan NuSOAP (Bag 2)

Artikel yang saya tulis dalam blog tutorial gratis kali ini merupakan kelanjutan dari artikel sebelumnya yang membahas tentang NuSOAP webservice. Dalam artikel kali ini akan dibahas bagaimana implementasi NuSOAP webservice untuk studi kasus pencarian data, dimana data yang merupakan response dari server webservice merupakan multiple data.
Adapun studi kasus yang dipilih di sini adalah pencarian data mahasiswa. Data mahasiswa ini nanti tersimpan di sebuah server misalkan bernama A, kemudian di server B dibuat semacam interface untuk pencarian data mahasiswa tersebut. Pada saat proses pencarian tersebut, antar server A dan B saling berkomunikasi via NuSOAP webservice.
Dalam implementasi studi kasus ini, pertama kita siapkan data mahasiswa terlebih dahulu di server A, misalkan dibuat tabel database sbb:
1.CREATE TABLE `mhs` (
2.`nim` varchar(5),
3.`nama` varchar(50),
4.`alamat` varchar(100),
5.PRIMARY KEY (`nim`)
6.)
dan berikut ini adalah sampel recordnya
 photo nusoap-01_zps541b2c68.jpg
Selanjutnya, kita siapkan script NuSOAP yang nantinya diletakkan di server A. Script ini nanti diperlukan untuk melayani request yang dilakukan oleh server B.
server.php
01.<?php
02. 
03.require_once('lib/nusoap.php');
04.$server new soap_server;
05. 
06.// registrasi method 'search'
07.$server->register('search');
08. 
09.// detail method 'search' dengan parameter $key
10.function search($key)
11.{
12.// koneksi ke database
13.mysql_connect('dbhost''dbuser''dbpass');
14.mysql_select_db('dbname');
15. 
16.// query pencarian data mahasiswa
17.$query "SELECT * FROM mhs WHERE nim = '$key' OR nama LIKE '%$key%' OR alamat LIKE '%$key%'";
18.$hasil = mysql_query($query);
19.while ($data = mysql_fetch_array($hasil))
20.{
21.// menyimpan data hasil pencarian dalam array
22.$result[] = array('nim' => $data['nim'], 'nama' =>$data['nama'], 'alamat' => $data['alamat']);
23.}
24.// mereturn array hasil pencarian
25.return $result;
26.}
27. 
28.$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA :'';
29.$server->service($HTTP_RAW_POST_DATA);
30.?>
Perhatikan pada script server.php di atas, bahwa di situ terdapat method dengan nama ‘search’. Method dengan parameter ‘key’ yang merupakan keyword pencarian ini nanti yang akan dipanggil oleh oleh server B ketika pencarian data. Jangan lupa pastikan method ‘search’ harus diregistrasikan dengan perintah
1.$server->register('search');
jika tidak, maka method tersebut tidak bisa dipanggil. Perhatikan juga bahwa apabila diinginkan data return suatu webservice berupa multiple data, maka data yang direturn harus tersaji dalam bentuk array.
Berikutnya, kita buat script interface untuk pencarian data mahasiswa di server B.
client.php
01.<html>
02.<head>
03.<title>Contoh NuSOAP Web Service </title>
04.</head>
05.<body>
06.<!-- form pencarian data -->
07.<form method="post" action="client.php?op=search">
08.Keyword Pencarian <input type="text" name="key"> <input type="submit" name="submit" value="Search">
09.</form>
10. 
11.<?php
12.// proses pencarian data
13.if (isset($_GET['op']))
14.{
15.if ($_GET['op'] == 'search')
16.{
17.require_once('lib/nusoap.php');
18.// baca keyword pencarian dari form
19.$key $_POST['key'];
20. 
21.// instansiasi obyek untuk class nusoap client, arahkan URL ke script server.php di server A
22.$client newnusoap_client('http://serverA/.../server.php');
23. 
24.// proses call method 'search' dengan parameter key di script server.php yang ada di server A
25.$result $client->call('search'array('key' => $key));
26. 
27.// jika data hasil pencarian ($result) ada, maka tampilkan
28.if (is_array($result))
29.{
30.echo "<table border='1'>";
31.echo "<tr><th>NIM</th><th>NAMA</th><th>ALAMAT</th></tr>";
32.foreach($result as $data)
33.{
34.echo "<tr><td>".$data['nim']."</td><td>".$data['nama']."</td><td>".$data['alamat']."</td></tr>";
35.}
36.echo "</table>";
37.// menampilkan jumlah data hasil pencarian
38.echo "<p>Ditemukan ".count($result)." data terkait kata kunci '".$key."'</p>";
39.}
40.else echo "<p>Data tidak ditemukan</p>";
41.}
42.}
43.?>
44. 
45.</body>
46.</html>
Keterangan:
Untuk mengetahui ada tidaknya hasil pencarian data yang merupakan response dari server A adalah cukup mudah, yaitu menggunakan function is_array(). Jika data hasil pencarian tidak ditemukan, maka data response bukan merupakan array sehingga nilai is_array() ini adalah FALSE. Sedangkan jika data hasil pencarian ditemukan, maka nilai is_array() adalah TRUE. Bagaimana untuk mengetahui jumlah data hasil pencarian, cukup mudah yaitu gunakan function count() yang akan menghitung jumlah elemen dari data array hasil response.
Berikut ini contoh tampilan dari interface pencarian data mahasiswa hasil implementasi dari NuSOAP webservice.
 photo nusoap-02_zps3d1d3a0b.jpg
Untuk sekedar mencoba-coba, Anda juga bisa menjalankan script client.php di atas dengan memanfaatkan NuSOAP webservice yang sudah saya sediakan dirosihanari.net, yaitu Anda cukup mengubah
1.$client new nusoap_client('http://serverA/.../server.php');
dalam script client.php menjadi
1.$client new nusoap_client('http://rosihanari.net/nusoap/server.php');
kemudian jalankan client.php di komputer Anda sendiri, dan tidak perlu membuat script server.php.
Mudah bukan membuatnya?? selamat mencoba dan semoga bermanfaat.



Sumber : blog.rosihanari.net

1 Komentar

Lebih baru Lebih lama

Formulir Kontak