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 2)
PHP

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:

CREATE TABLE `mhs` (
  `nim` varchar(5),
  `nama` varchar(50),
  `alamat` varchar(100),
  PRIMARY KEY (`nim`)
)

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

<?php

require_once('lib/nusoap.php');
$server = new soap_server;

// registrasi method 'search'
$server->register('search');

// detail method 'search' dengan parameter $key
function search($key)
{
     // koneksi ke database
     mysql_connect('dbhost', 'dbuser', 'dbpass');
     mysql_select_db('dbname');

     // query pencarian data mahasiswa
     $query = "SELECT * FROM mhs WHERE nim = '$key' OR nama LIKE '%$key%' OR alamat LIKE '%$key%'";
     $hasil = mysql_query($query);
     while ($data = mysql_fetch_array($hasil))
     {
          // menyimpan data hasil pencarian dalam array
          $result[] = array('nim' => $data['nim'], 'nama' => $data['nama'], 'alamat' => $data['alamat']);
     }
     // mereturn array hasil pencarian
     return $result;
}

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

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

$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

<html>
   <head>
      <title>Contoh NuSOAP Web Service </title>
   </head>
   <body>
      <!-- form pencarian data --> 
      <form method="post" action="client.php?op=search">
          Keyword Pencarian <input type="text" name="key"> <input type="submit" name="submit" value="Search">
      </form>

      <?php
        // proses pencarian data
        if (isset($_GET['op']))
        {
            if ($_GET['op'] == 'search')
            {	
                require_once('lib/nusoap.php');
                // baca keyword pencarian dari form
                $key = $_POST['key'];

                // instansiasi obyek untuk class nusoap client, arahkan URL ke script server.php di server A
                $client = new nusoap_client('http://serverA/.../server.php');
 
                // proses call method 'search' dengan parameter key di script server.php yang ada di server A
                $result = $client->call('search', array('key' => $key));

                // jika data hasil pencarian ($result) ada, maka tampilkan  
                if (is_array($result))
                {
                    echo "<table border='1'>";
                    echo "<tr><th>NIM</th><th>NAMA</th><th>ALAMAT</th></tr>";
                    foreach($result as $data)
                    {
                        echo "<tr><td>".$data['nim']."</td><td>".$data['nama']."</td><td>".$data['alamat']."</td></tr>";
                    }	
                    echo "</table>";
                    // menampilkan jumlah data hasil pencarian
                    echo "<p>Ditemukan ".count($result)." data terkait kata kunci '".$key."'</p>";
                }
                else echo "<p>Data tidak ditemukan</p>";	
            }
        }	
        ?>

    </body>
</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 di rosihanari.net, yaitu Anda cukup mengubah

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

dalam script client.php menjadi

$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.

 


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