Sunday, March 14, 2010

PHP XML Webservices

PHP adalah sebuah Server Side Scripting yang populer untuk membuat website menjadi dinamis dan tidak menutup kemungkinan juga untuk membuat aplikasi berbasis web. 


Kepopuleran PHP itu mungkin karena yang relatif lebih mudah dipelajari bila dibandingkan Server Side Scripting atau bahasa pemrograman lain, dan mungkin juga untuk menggunakan PHP tidak perlu bayar license alias gratis. info lebih lengkap tentang PHP dapat dilihat di klik



XML adalah sebuah format teks. XML biasanya digunakan untuk menyimpan data dan sebagai format untuk pertukaran data. Contoh dari  penggunaaan XML adalah RSS seperti contoh RSS ini [klik]. Penjelasan lebih detail dan cara membuat XML dapat dilihat di klik

Web Services adalah  sebuah layanan yang disediakan sebuah sistem untuk meningkatkan kolaborasi antar satu sistem dengan sistem yang lain. 

Misalkan sistem tersebut adalah sebuah website *Prakiraan Cuaca* yang menyediankan webservice untuk client (misalkan sebuah aplikasi desktop , blog,  webiste portal ,dll) siapa saja secara bebas untuk mendapatkan data (hanya data saja tidak ada tag html-css-javascript, dll)  terkini tentang cuaca berdasarkan request (misalkan kota bandung dan jakarta).

Untuk menyediakan Webservice dapat menggunakan bahasa pemrograman apa saja seperti PHP/Java/Ruby/C/Phtyon/Basic yang penting Webservice tersebut menghasilkan sebuah format data berupa teks yang biasa nya dalam bentuk XML atau JSON dan Webservice tersebut dapat diakses melalui protokol HTTP.

Sedangkan client atau pemakai Webservice tersebut dapat menggunakan bahasa pemrograman apa saja seperti PHP/Java/Ruby/C/Phtyon/Basic dan tidak harus sama dengan bahasa pemrograman yang dipakai oleh Webservice. Yang penting client tersebut dapat melakukan request HTTP dan dapat melakukan parsing teks.

Untuk bahasa pemgrograman sekarang fitur untuk request HTTP  dan parsing teks sepertinya sudah merupakan fitur yang biasa. Penjelasan lebih lengkap tentang webservice dapat dilihat di klik


Pada posting ini Webservice yang akan dibuat adalah sebuah simple webservice tentang operasi sederhana matematika (tambah/kurang/bagi/kali) mengunakan PHP. Kemudian webservice tersebut diakses oleh sebuah client mengunakan PHP lalu melakukan parsing XML. 

Kurang lebih workflow-nya Webservice yang akan dibuat  seperti gambar dibawah ini:


Dibawah ini adalah Script  PHP Webservice untuk memproses request kemudian menghasilkan XML sebagai hasil dari pemrosesan request.
if(isset($_GET['v1']) and $_GET['v2'] and $_GET['op']) 
{

 /*begin: prose perhitungan*/
 $a = (int) $_GET['v1'];
 $b = (int) $_GET['v2']; 
 $op = $_GET['op']; 
 $jml = 0;

 switch($op)
 {
  case 'tambah':
   $jml = $a + $b;
   break;
  case 'kurang':
   $jml = $a - $b;
   break; 
  case 'bagi':
   $jml = $a / $b;
   break;
  case 'kali':
   $jml = $a * $b;
   break;
  default:
   $jml = 0;   
 }
 /*end: proses perhitungan*/

 /*begin: proses menghasilkan xml*/
 header('Content-type: text/xml');
 $xml= "<result>".
           "<a>".$a."</a>".
           "<b>".$b."</b>".
           "<op>".$op."</op>".
           "<jml>".$jml."</jml>".
           "<message>Proses Berhasil</message>".
        "</result>";
 echo $xml;
 /*end: proses menghasilkan xml*/
}
Pada Script diatas proses yang pertama dilakukan adalah menerima request dan  melakukan operasi matematika, kemudian proses selanjutnya melakukan pembentukan XML dan menyisipkan data-data dari hasil perhitungan proses pertama kedalam XML.

Dibawah ini adalah Script PHP Client untuk melakukan request ke webservice, kemudian melakukan parsing isi XML.
$xml = file_get_contents('http://localhost/webservice/webservice.php?v1=4&v2=5&op=kali');
$data = new SimpleXMLElement($xml);
echo $data->jml;  
Proses client diatas yang pertama adalah melakukan request http ke alamat webservice berserta variabel url yang diperlukan, pada contoh diatas adalah http://localhost/webservice/webservice.php?v1=4&v2=5&op=kali kemudian melakukan parsing XML dari return Webservice.

Php version yang digunakan PHP 5.2.10
Operation System yang digunakan Ubuntu Karmic Koala

1 comment: