Implementasi Web Service Sederhana dengan NuSoap

Share :

Berhubung kemarin sempet dapat tugas Mata kuliah SIT (Sistem Informasi Terdistribusi) dan dapet jatah membahas Web service.. So, pada kesempatan ini saya mau share sedikit tentang apa itu Web Service dan bagaimana implementasi Web Service itu sendiri… :D. Oke, sebelum masuk ke Tutorial, let’s see.. apa itu “Web Service”.

Ok, jadi Web Service merupakan suatu sistem yang dirancang untuk mendukung interoperabilitas dan interaksi komunikasi antar sistem (aplikasi) dalam suatu jaringan. Web Service memungkinkan kita dapat mengakses informasi atau mendapatkan potongan informasi dari suatu aplikasi melalui aplikasi yang lain. Contoh mudahnya misal pada layanan yang terdapat di Facebook atau Twitter. Kita (user) dapat mengakses dan berinteraksi dengan Facebook atau Twitter baik melalui website (facebook.com / twitter.com) atau melalui aplikasi-aplikasi daripihak ketiga seperti Aplikasi Facebook yang ada di Ponsel, Aplikasi seperti TwitDeck, Yoono dsb. Aplikasi-aplikasi tersebut memanfaatkan “Web Service” yang disediakan oleh Facebook maupun Twitter sehingga dapat memperoleh konten informasi dari aplikasi tersebut.

Web service sendiri dibentuk dari :

  1. Service provider, merupakan pemilik Web Service yang berfungsi menyediakan kumpulan operasi dari Web Service.
  2. Service requestor, merupakan aplikasi yang bertindak sebagai klien dari Web Service yang mencari dan memulai interaksi terhadap layanan yang disediakan.
  3. Service registry, merupakan tempat dimana Service provider mempublikasikan layanannya. Pada arsitektur Web Service, Service registry bersifat optional. Teknologi web service memungkinkan kita dapat menghubungkan berbagai jenis software yang memiliki platform dan sistem operasi yang berbeda.

Web Service menggunakan SOAP  (Simple Object Access Protocol) yang berbasis pada XML. XML (Extensible Markup Language) merupakan standar bahasa yang digunakan dalam pertukaran data dalam Web Service. Web Service yang akan kita buat ini akan menggunakan library Open Source bernama “NuSOAP” . NuSOAP adalah sebuah kumpulan class-class PHP yang memungkinkan  user untuk mengirim dan menerima pesan SOAP melalui protokol HTTP. NuSoap sendiri dapat diunduh secara gratis di sini. Ok. mari kita mulai tutorialnya.. 😉

Pada contoh kasus ini kita akan membuat aplikasi Web Service untuk mengakses Data mahasiswa. yang perlu kita siapkan untuk membuat aplikasi Web service “Data Mahasiswa” antara lain :

  1. Library Web Service : NuSOAP
  2. Rancangan Database Mahasiswa (mhs_webserv.sql)
  3. Rancangan Script untuk Server (server.php)
  4. Rancangan Script untuk Client. (client.php)

1. Library Web Service NuSOAP

NuSOAP yang sudah kita download kita extrak dan kita letakkan satu folder dengan aplikasi web service yang akan kita buat. Jangan lupa untuk menon-aktifkan  fitur SOAP bawaan PHP yang bisa disetting di file php.ini. (extension=php_soap.dll) dan mengaktifkan fitur CURL (extension=php_curl.dll).

2. Rancangan Database Mahasiswa :

Database Engine yang kita pakai adalah MySQL. Struktur Database/Table : Database Name = mhs_webserv, Table Name = mahasiswa;

a. Buat Database “mhs_webserv”

create database mhs_webserv;

b. Buat Tabel “mahasiswa” :

CREATE TABLE IF NOT EXISTS `mahasiswa` (
`nim` varchar(10) NOT NULL,
`nama` varchar(50) NOT NULL,
`alamat` text NOT NULL,
PRIMARY KEY (`nim`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
c. Isi data mahasiswa.
INSERT INTO `mahasiswa` (`nim`, `nama`, `alamat`) VALUES
('001', 'Kabul', 'Pekalongan'),
('002', 'Ridwan', 'Semarang');

3. Rancangan Script untuk Server (server.php)

<?php
//panggil file soap

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

$ws_srv->register(ambilData);

function tes($param){
$nama= $param['nama'];
$alamat = $param['alamat'];
$return_value[] =array('nama'=>$nama,'alamat'=>$alamat);
return ($return_value);}

function ambilData(){
mysql_connect('127.0.0.1','root','');
mysql_select_db('coba_wservice');
$sql = mysql_query('SELECT * FROM mahasiswa WHERE 1');
$return_data_count=mysql_num_rows($sql);
//$return_data[]=array();
while ($row=mysql_fetch_array($sql)){
$return_data[]=array('nim'=>$row['nim'],'nama'=>$row['nama'],
'alamat'=>$row['alamat']);
}
$return['count']=$return_data_count;
$return['data']=$return_data;
return $return;

}

$HTTP_RAW_POST_DATA = isset ($HTTP_RAW_POST_DATA) ?
$HTTP_RAW_POST_DATA:"";
$ws_srv->service($HTTP_RAW_POST_DATA);

?>

4. Rancangan Script untuk Client. (client.php)

<?php
require_once('../../nusoap/nusoap.php');
$client = new soapclient('http://127.0.0.1/mhs_webserv/server/');
//$param = array('nama'=>'Kabul Kurniawan','alamat'=>'Pekalongan');
$result = $client->call('ambilData');
$n=$result['count'];
$data=$result['data'];
echo '<table border=1>';
echo "<tr><th>Nim</th><th>Nama</th><th>Alamat</th></tr>";
for($i=0;$i<$n;$i++){
echo  "<tr><td>".$data[$i]['nim']."</td><td>".$data[$i]['nama'].
"</td><td>".$data[$i]['alamat']."</td></tr>";

}
echo "</table>";
print_r ($result['count']);
echo'<br>';
print_r ($result['data']);
?>

Setelah rancangan-rancangan tersebut dibuat, kita dapat langsung mengakses data mahasiswa melalui client.php, berikut hasilnya..  🙂

NB : Contoh Source Code, database beserta Library NuSOAP dapat anda download di sini., semoga bermanfaat 🙂

This entry was posted on Monday, May 2nd, 2011 at 9:20 pm and is filed under Integration, Programming. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

38 Responses to “Implementasi Web Service Sederhana dengan NuSoap”

  1. apri Says:

    mau tanya dong…:D, gimana yak cara mengetahui response time pada NuSoap.

  2. admin Says:

    @apri : coba di debug manual aja mas di NuSOAP-nya :
    echo ” . htmlspecialchars($client->request, ENT_QUOTES) . ”;
    echo ” . htmlspecialchars($client->response, ENT_QUOTES) . ”;

  3. mhs Says:

    saya mengikuti step diatas, kenapa datanya tidak muncul ya mas. apa ada settingan tambahan. yang saya gunakan. makasih

  4. admin Says:

    @mhs : ada pesan error apa mas? hmm, mungkin settingan webservernya mas, dicek soap bawaan php-nya apakah dah off? atau path Nusoap-nya.. mungkin belum ngelink.

  5. mhs Says:

    bang,kok error. knp ya ? muncul pesan spt di bwah ini :

    Warning: require_once(../../nusoap/nusoap.php) [function.require-once]: failed to open stream: No such file or directory in C:\xampp\..\..\client\client.php on line 2

    Fatal error: require_once() [function.require]: Failed opening required ‘../../nusoap/nusoap.php’ (include_path=’.;C:\xampp\php\pear\’) in C:\xampp\..\..\client\client.php on line 2

  6. admin Says:

    @mhs : oh itu path nusoap-nya keliru mas. jika ditaruh dalam satu folder dengan folder mhs_webserv maka path yang bener : ‘../nusoap/nusoap.php’. monggo dicoba 🙂

  7. annie Says:

    mas, masnya ngejalin scriptnya di php versi brp ya klo bole tau?
    saya jalanin di php 5.3.3 kug deprecated ya..

  8. admin Says:

    @anni : saya pake php versi 5.3.1, saran mas danukidd bisa dicoba 🙂
    @danikudd: insyaAlloh mas 🙂

  9. danukidd Says:

    @admin: Terima kasih tutorialnya Bang Admin. Tambah lagi ya tutorialnya..:)
    @annie: Coba pake nusoap-0.9.5..

  10. dian Says:

    mas saya pake severnya apache2triad, udah pake nusoap 0.9.5 keluar message gini “This service does not provide a Web description”.

    kalo pake contoh yang ini
    “NB : Contoh Source Code, database beserta Library NuSOAP dapat anda download di sini.”, di servernya muncul xml tapi datanya ga ada.

    Solusinya apa ya? Tq

  11. dakoel Says:

    Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://localhost/nusoap/samples/service.php’

    mas saya nyoba kok ga bisa2 muncul pesan diatas terus ya, untuk settingan sudah semunya di enable dan patch nusoapnya juga udah bener.

  12. dakoel Says:

    kalau file servernya yang dijalankan muncul error seperti ini

    This service does not provide a Web description

  13. Lindsay Cornelia Says:

    thx untuk tutorial simple namun sangat informatif.

    saya terbantu sekali dengan contoh sederhana dan fundamental seperti ini dibanding dengan berbagai contoh yg rumit dari google search.

    terima kasih mas 🙂
    sekarang saya bisa mengerti SOAP menggunakan php.

  14. hengky Says:

    bro, mau nanya nih, kalau errornya seperti ini, kira2 apa yang salah ya? mohon dibantu, thx a lot

    Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\htdocs\mhs\nusoap\nusoap.php on line 5046

    Fatal error: Cannot redeclare class soapclient in C:\xampp\htdocs\mhs\nusoap\nusoap.php on line 5583

  15. iyan Says:

    Deprecated: Assigning the return value of new by reference is deprecated in E:\www\mhs_webserv\nusoap\nusoap.php on line 5046

    Deprecated: Function ereg() is deprecated in E:\www\mhs_webserv\nusoap\nusoap.php on line 5265

    Deprecated: Function ereg() is deprecated in E:\www\mhs_webserv\nusoap\nusoap.php on line 1602

    Deprecated: Function ereg() is deprecated in E:\www\mhs_webserv\nusoap\nusoap.php on line 5287

    Deprecated: Function ereg() is deprecated in E:\www\mhs_webserv\nusoap\nusoap.php on line 2052

    Deprecated: Function eregi() is deprecated in E:\www\mhs_webserv\nusoap\nusoap.php on line 5351

  16. iyan Says:

    saya pakai versi php 5.3.6 kok error seperti diatas Mas Kabul ?

  17. sigit Says:

    makasih mas buat tutorialnya..
    saya coba dulu, semoga bermanfaat buat TA saya.. heee

  18. sigit Says:

    mas punyaku eror kayak gini :
    Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://localhost/webservice/server/’ : Premature end of data in tag html line 2 in C:\xampp\htdocs\webservice\client\client.php:3 Stack trace: #0 C:\xampp\htdocs\webservice\client\client.php(3): SoapClient->SoapClient(‘http://localhos…’) #1 {main} thrown in C:\xampp\htdocs\webservice\client\client.php on line 3

  19. yitno Says:

    om, gimana ya buat clientnya di java?? tolong di ajarin yoooo…. kalau ada tutorialnya tolong kirim ke email q yooo

  20. haris Says:

    mas ajarin donk, gmn ya input data mahasiswa kl dari client.php dan server.php? kl penjelasan di atas input data mahasiswa manual lewat sql pada xampp. trimaksih

  21. admin Says:

    @dian : sy sendiri belum mencoba apache2triadnya mas, bisa dispesifikasikan versi apache dan php-nya?
    @dakoel : coba ip-servernya diganti 127.0.0.1 mas 🙂
    @hengky,iyan : SOAP service yang di php bawaannya masih aktif mas, “Jangan lupa untuk menon-aktifkan fitur SOAP bawaan PHP yang bisa disetting di file php.ini. (extension=php_soap.dll) dan mengaktifkan fitur CURL (extension=php_curl.dll).”
    @yitno : ok, kapan2 nanti sy coba client yang buat java mas.. 🙂
    @haris : ok, semoga kedepan sy bisa buat tutorial yang mas minta.. ditunggu aja mas 🙂

  22. dheliz Says:

    kalo untuk function ambil data dalam bahasa c# itu bagaimana ya source code nya ?

  23. putra Says:

    cara menon-aktifkan fitur SOAP bawaan PHP yang bisa disetting di file php.ini. (extension=php_soap.dll) dan mengaktifkan fitur CURL (extension=php_curl.dll) gimana mas ????

  24. sesar Says:

    saat buka client

    Fatal error: Cannot redeclare class soapclient in C:\xampp\htdocs\mhs_webserv\nusoap\nusoap.php on line 5583

    saat buka server
    Fatal error: Cannot redeclare class soapclient in C:\xampp\htdocs\mhs_webserv\nusoap\nusoap.php on line 5583

  25. MassaM Says:

    Mas kok muncul pesan error kayak gini ya??

    Fatal error: Cannot redeclare class soapclient in D:\xampp\htdocs\webservice\nusoap\nusoap.php on line 5583

    Kenapa ya?

  26. AnggaE Says:

    mas saya coba ganti configurasi di file php.ini kok ndak bisa d save
    muncul pesan access is denied

    mohon bantuannya

  27. admin Says:

    @mas dheliz : Oke, kapan2 kita bahas ya mas 🙂
    @mas putra : untuk menon-aktifkan extension dengan memberi tanda “;” didepan extension itu mas.. kalo mengaktifkan tinggal di hilangkan saja tanda “;”
    @mas massam : kesalahannya karena masnya belum menon-aktifkan fitur SOAP bawaan PHP di file php.ini. (extension=php_soap.dll) dan mengaktifkan fitur CURL (extension=php_curl.dll).
    @mas AnggaE : access is denied berarti filenya tidak bisa ditulis mas, kalo dilinux di ubah chmod-nya jadi 777, kalo di windows dibuka saja tapi sebagai Administrator 🙂

  28. khoerul amri Says:

    terimaa kasih mas atas penjelasannya 🙂 .
    sangat bermanfaat

  29. Zindan Says:

    Ada contoh yang pakai submit data ga dengan method post ?

  30. admin Says:

    @mas zindan : insyaAllah, semoga lain waktu bisa saya buat tutorialnya mas 🙂

  31. fina Says:

    Mas saya running servernya karena ingin mengetahui script XML nya knpa munculnya
    error in msg parsing:xml was empty, didn’t parse!

    apa beda versi nusoap mempengaruhi ??

    saya sangat minta tolong mas,untuk TA. kalo ada saya minta YM nya.Terimakasih banyak. ini YM saya finaspartacus

  32. admin Says:

    @fina: silakan add YM saya kabulkurniawan@yahoo.co.id, atau email ke kabulkurniawan@gmail.com. kita diskusikan lebih lanjut ya..

  33. fina Says:

    Ketika saya menggunakan nusoap nusoap.php,v 1.123 2010/04/26 saat running XML yg muncul This service does not provide a Web description

    Ketika saya menggunakan nusoap.php,v 1.75 2004/05/05 12:15:04 (yg dari tutorial ini) error yg muncul di xml nya error in msg parsing:xml was empty, didn’t parse!

  34. dewi Says:

    mas,kalo errorny gini,itu kenapa yah?

    SOAP-ENV:Client

    method ” not defined in service

  35. dewi Says:

    SOAP-ENV:Clientmethod ” not defined in service

  36. maulana Says:

    Asalam mualaikum, kalau memanggila web servi nya ada pesan gini : ERROR! XML error parsing SOAP payload on line 2: Invalid document end.
    Apa ya masalahnya?

  37. deden Says:

    assalamualaikum mas, scriptnya sudah saya coba, namun yang saya herankan terdapat perbedaan, bila saya mengikuti script yang ada di contoh halaman website ini dan menjalankan client.php, datanya tidak mau muncul, hanya muncul kolom judul nim, nama, alamat. Tetapi berbeda ketika saya mendownload file source dan mengikuti scriptnya ternyata datanya mau muncul (dengan menjalankan client.php). Padahal bila dilihat kembali tidak ada yang berbeda (database yg dipakai juga sama),

  38. danx Says:

    om.. buat riquest android coneksinya gimana???

Leave a Reply

CommentLuv badge