Tuesday, September 20, 2011

Membuat Web Service Sederhana dengan nuSOAP

[diperbarui pada 12 Mei 2015]

PERHATIAN
melihat perkembangan saat ini untuk membuat web service saya menyarankan untuk migrasi ke RESTful web service http://www.ardhi.web.id/2015/05/web-service-php-menggunakan-slim_11.html, saya sudah tidak akan membuat artikel baru tentang pembuatan web service menggunakan SOAP

Berawal dari postingan sebelumnya yang menanyakan perihal web service SOAP yang dibuat dengan PHP dan client pake Android. Rasa penasaran saya menuntun saya untuk mencoba membuat SOAP web service sederhana dan membuat Android clientnya
Kali ini akan saya bahas mengenai pembuatan web service servernya, sebagai informasi lingkungan development saya sebagai berikut:
Xubuntu 13.04 64 bit
paket mySQL 5.5.32
paket PHP 5.4.9
library nuSOAP 0.9.5, bisa diunduh di http://sourceforge.net/projects/nusoap/
Karena filosofi CODING adalah COpy - paste - eDitING maka selanjutnya kita perlu berburu source code web service dengan nuSOAP :) dari tutorial yang sudah dibuat oleh rekan2 programmer di seluruh dunia. Salah satu referensi yang bagus saya temui di http://www.scottnichol.com/nusoapintro.htm

Di sini saya akan membuat sebuah web service sederhana yang mengembalikan sebuah String dengan tambahan sebuah parameter input dari sisi client.
Saya akan membuat sebuah file PHP sebagai web service server, includekan library nuSOAPnya
require_once('nusoap095/lib/nusoap.php');
Sesuaikan direktorinya dengan dengan direktori tempat library nuSOAP disimpan
Kemudian buat server SOAP dengan baris kode berikut
$server = new soap_server;
Lalu setting WSDLnya
$server->configureWSDL('hello');
Buat script fungsi SOAPnya dan register ke server SOAP
$server->register(
  'hello',
  array('name' => 'xsd:string'),      // input parameters
  array('return' => 'xsd:string'),    // output parameters
  'uri:helloworld',                   // namespace
  'uri:helloworld/hello',             // SOAPAction
  'rpc',                              // style
  'encoded'                           // use
 );
Di bagian akhir script tambahkan
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
 $server->service($HTTP_RAW_POST_DATA);
Source code lengkapnya sebagai berikut ini
<?php
 // Pull in the NuSOAP code
 //sesuaikan folder library nuSOAP dengan direktori kamu
 require_once('nusoap095/lib/nusoap.php'); 
 // Create the server instance
 $server = new soap_server;
 $server->configureWSDL('hello');
 // Register the method to expose
 $server->register(
  'hello',
  array('name' => 'xsd:string'),      // input parameters
  array('return' => 'xsd:string'),    // output parameters
  'uri:helloworld',                   // namespace
  'uri:helloworld/hello',             // SOAPAction
  'rpc',                              // style
  'encoded'                           // use
 );
 // Define the method as a PHP function
 function hello($name) {
  return 'Hello, ' . $name;
 }
 // Use the request to (try to) invoke the service
 $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
 $server->service($HTTP_RAW_POST_DATA);

?>
Jangan lupa, simpan file misalnya dengan nama server2.php.
Buka di browser kamu, apabila sudah benar maka akan muncul tampilan seperti di bawah ini

Jika diklik link WSDL di halam tersebut, akan muncul dokumen WSDLnya seperti gambar berikut

Sekarang masalahnya adalah bagaimana kita tahu kalau web service yang kita buat sudah bekerja?
Saya sarankan anda menggunakan tool web service client untuk mengetes web service yang sudah dibuat. Banyak terdapat tool yang bisa digunakan, salah satunya adalah soapUI atau dapat pula menggunakan browser Firefox yang telah ditambahkan addon bernama SOA Client seperti yang saya gunakan di tutorial ini.
Search saja addon bernama SOA Client

Untuk mengakses tool tersebut klik menu Tools --> SOA Client --> Access Web Service dari aplikasi Firefox

Masukkan alamat WSDL ke field WSDL Address kemudian klik tombol Parse WSDL

Masukkan parameter nama, misalnya ardhi dan klik tombol Invoke

Bila lancar, web service yang sudah kita buat akan memberikan respon

Woke, sampai di sini dulu Part-1nya, semoga bermanfaat :)
Bagian 2 -- Membuat Web Service Client Sederhana di Android

6 comments:

Tito Prabara Putra said...


Fatal error: Uncaught SoapFault exception: [Client] Function ("call") is not a valid method for this service in C:\xampp\htdocs\belajarWS\client.php:7 Stack trace: #0 C:\xampp\htdocs\belajarWS\client.php(7): SoapClient->__call('call', Array) #1 C:\xampp\htdocs\belajarWS\client.php(7): SoapClient->call('hello', Array) #2 {main} thrown in C:\xampp\htdocs\belajarWS\client.php on line 7

ardhi wijayanto said...

sepertinya it karena ekstensi soap bawaan PHP nya bro, coba ekstensi soap bawaan dari PHP dinonaktifkan dulu
ATAU
test soap web servicenya jangan pakai source code client.php dari saya di atas, coba pake soapUI atau addon firefox untuk ngetest web service

soap server (server2.php) diakses normal kan?

ardhi wijayanto said...

sudah saya update artikelnya masbro

Tito Prabara Putra said...

ok ok bro

Anonymous said...

Mantabh . .. matur suwun tutorialnya, tapi kok ada error : faultstring: unable to serialize result .

ardhi wijayanto said...

melihat perkembangan saat ini untuk membuat web service saya menyarankan untuk migrasi ke RESTful web service http://www.ardhi.web.id/2015/05/web-service-php-menggunakan-slim_11.html, saya sudah tidak akan membuat artikel baru tentang pembuatan web service menggunakan SOAP

Post a Comment

ardhi.web.id. Powered by Blogger.