Cara Menggunakan Web Service Dengan SOAP - NuSOAP

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.



server.php

01.02.
03.// mengincludekan file berisi class nusoap
04.require_once('lib/nusoap.php');
05.// instansiasi class soap untuk server
06.$server = new soap_server;
07.// meregistrasi 'method' untuk proses penjumlahan dengan nama 'jumlahkan'
08.$server->register('jumlahkan');
09.
10.// detil isi method 'jumlahkan'
11.function jumlahkan($x, $y) {
12.return $x + $y;
13.}
14.
15.// memberikan response service
16.$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
17.$server->service($HTTP_RAW_POST_DATA);
18.?>



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

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



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



client.php

01.02.
03.require_once('lib/nusoap.php');
04.
05.// dua bilangan yang akan dijumlahkan
06.$bil1 = 10;
07.$bil2 = 25;
08.
09.// instansiasi obyek untuk class nusoap client
10.$client = new nusoap_client('http://nomor_ip_komputerB/../server.php');
11.// proses call method 'jumlahkan' di script server.php yang ada di komputer B
12.$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));
13.
14.echo "Hasil penjumlahan ".$bil1." dan ".$bil2." adalah ".$result."
";
15.
16.?>



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

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

01.02.
03.// mengincludekan file berisi class nusoap
04.require_once('lib/nusoap.php');
05.// instansiasi class soap untuk server
06.$server = new soap_server;
07.// meregistrasi 'method' untuk proses penjumlahan dengan nama 'jumlahkan' dan 'kurangi'
08.$server->register('jumlahkan');
09.$server->register('kurangi');
10.
11.// detil isi method 'jumlahkan'
12.function jumlahkan($x, $y) {
13.return $x + $y;
14.}
15.
16.// detil isi method 'kurangi'
17.function kurangi($x, $y) {
18.return $x - $y;
19.}
20.
21.// memberikan response service
22.$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
23.$server->service($HTTP_RAW_POST_DATA);
24.?>



dan berikut ini contoh script client.php nya.



client.php

01.02.
03.require_once('lib/nusoap.php');
04.
05.// dua bilangan yang akan dijumlahkan atau dikurangi
06.$bil1 = 10;
07.$bil2 = 25;
08.
09.// instansiasi obyek untuk class nusoap client
10.$client = new nusoap_client('http://nomor_ip_komputerB/../server.php');
11.// proses call method 'jumlahkan' di script server.php yang ada di komputer B
12.$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));
13.echo "Hasil penjumlahan ".$bil1." dan ".$bil2." adalah ".$result."
";
14.
15.// proses call method 'kurangi' di script server.php yang ada di komputer B
16.$result = $client->call('kurangi', array('x' => $bil1, 'y' => $bil2));
17.echo "Hasil pengurangan ".$bil1." dan ".$bil2." adalah ".$result."
";
18.
19.?>



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

1.$client->request;

Contoh:



client.php

01.02.
03.require_once('lib/nusoap.php');
04.
05.// dua bilangan yang akan dijumlahkan atau dikurangi
06.$bil1 = 10;
07.$bil2 = 25;
08.
09.// instansiasi obyek untuk class nusoap client
10.$client = new nusoap_client('http://rosihanari.net/nusoap/server.php');
11.// proses call method 'jumlahkan' di script server.php yang ada di komputer B
12.$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));
13.
14.// menampilkan format XML dalam proses call/request
15.echo $client->request;
16.
17.?>



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:

1.$client->response;



Contoh:



client.php

01.02.
03.require_once('lib/nusoap.php');
04.
05.// dua bilangan yang akan dijumlahkan atau dikurangi
06.$bil1 = 10;
07.$bil2 = 25;
08.
09.// instansiasi obyek untuk class nusoap client
10.$client = new nusoap_client('http://rosihanari.net/nusoap/server.php');
11.// proses call method 'jumlahkan' di script server.php yang ada di komputer B
12.$result = $client->call('jumlahkan', array('x' => $bil1, 'y' => $bil2));
13.
14.// menampilkan format XML hasil response
15.echo $client->response;
16.
17.?>



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 berupa data array/multiple data. Biasanya kasus ini diterapkan untuk proses lookup data yang ada di server.





=======================================================================

Artikel Ke--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.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 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.
02.
03.Contoh NuSOAP Web Service
04.
05.
06.
07.

08.Keyword Pencarian
09.

10.
11.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 = new nusoap_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 "";
31.echo " ";
32.foreach($result as $data)
33.{
34.echo " ";
35.}
36.echo "
NIMNAMAALAMAT
".$data['nim']."".$data['nama']."".$data['alamat']."
";
37.// menampilkan jumlah data hasil pencarian
38.echo "Ditemukan ".count($result)." data terkait kata kunci '".$key."'
";
39.}
40.else echo "Data tidak ditemukan
";
41.}
42.}
43.?>
44.
45.
46.



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 disini, 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.
   

Share this

Related Posts

Previous
Next Post »

2 komentar

Write komentar
12 September 2014 13.19 delete

Errorx kyk gini Bang "Warning: SoapClient::SoapClient(http://localhost/coba2/serverbook.php) [function.SoapClient-SoapClient]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\xampp\htdocs\coba2\clientbook.php on line 5

Warning: SoapClient::SoapClient() [function.SoapClient-SoapClient]: I/O warning : failed to load external entity "http://localhost/coba2/serverbook.php" in C:\xampp\htdocs\coba2\clientbook.php on line 5

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\coba2\clientbook.php on line 41" apa itu bang apakah ada di atur lagi xammpx atau versi xampp

Reply
avatar
13 Desember 2014 09.34 delete

itu masalahnya sama kaya aku ,,,,

coba semmua script masalahnya sama di koneksi wsdl,,,,
mungkin ada perbedaan versi ya ?

Reply
avatar