Anda di halaman 1dari 3

BAB X

PHP WebServices

1. Tujuan
1. Mahasiswa mampu membuat service dengan PHP web services
2. Mahasiswa mampu membuat client untuk PHP web services

2. Tools
Apache, PHP, Editor Teks, NuSOAP

3. Dasar Teori
Web service merupakan salah satu paradigma dalam sistem terdistribusi yang memanfaatkan XML
sebagai landasannya. XML dimanfaatkan untuk komunikasi data melalui protokol HTTP sehingga bisa
melewati firewall. Terdapat tiga elemen dalam web service : SOAP, UDDI, WSDL.

4. Langkah Praktikum
Sebelum melakukan praktikum, unduhlah terlebih dahulu library NuSOAP dari
http://sourceforge.net/projects/nusoap. Ekstraklah hasil download anda, salin direktori lib,
kemudian letakkan ke folder project anda.

Dasar Web Services Tanpa WSDL
NuSOAP mendukung pembuatan service tanpa WSDL seperti pada program berikut :

<?php
/*
* File : server_nowsdl.php
* Desc : Program untuk membuat service tanpa WSDL
*/
// Pull in the NuSOAP code
require_once('lib/nusoap.php');
// membuat server instance
$server = new nusoap_server();
// register method untuk dipublish
$server->register('kuadrat');
// mendefinisikan method yang untuk dipublish
function kuadrat($num) {
return $num*$num;
}
// 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);

?>

<?php
/*
* File : client_nowsdl.php
* Desc : Program untuk membuat service tanpa WSDL
*/
// Pull in the NuSOAP code
require_once('lib/nusoap.php');
// membuat instance dari client, false=>tanpa wsdl
$client = new nusoap_client("http://url/anda/server_nowsdl.php",false);
// Call the SOAP method
$result = $client->call('kuadrat', array('num' => 2));
// Display the result
echo "hasil pemanggilan service kuadrat : ".$result;
?>
Perlu diketahui bahwa WSDL adalah sebuah standar. Jadi, jika pembuatan service yang dilakukan adalah
tanpa WSDL, maka kecil kemungkinan service yang dibuat berinteroperasi dengan sistem service
yang lain.


SOAP Struct
SOAP Struct merupakan tipe komplek dalam XML Schema. Pada tipe ini, dapat ditampung beberapa
macam tipe data. Implementasi pada PHP-nya, digunakan array asosiatif seperti contoh berikut :


<?php
/*
* File : soapstruct_service.php
* Desc : service soap struct
*/
require_once '../lib/nusoap.php';
$server = new nusoap_server();
$server->register('hello');
//method hello yang didefinisikan di atas
function hello($person){
$greeting = 'Hello '.$person['nama'] .
', anda berumur '.$person['umur'];
$retval = array('greeting'=>$greeting);
return new soapval('return','Person',$retval);
}

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

?>
Pada program di atas, service menyediakan input berupa nama dan umur. Objek soapval memberikan
layanan metadata (data dari data) yang menggambarkan apa yang akan ditransfer antara client
dengan server. Parameter yang ada pada soapval adalah, berturut turut : nama objek, tipe
data,nilai objek(value of the object). Jadi objek soapval di atas bisa dibaca :
service mengembalikan objek dengan nama 'return', bertipe 'person' dengan nilai dari variabel $retval.

<?php
/*
* File : soapstruct_client.php
* Desc : client soap struct
*/
require_once '../lib/nusoap.php';
$client = new nusoap_client('http://url/anda/soapstruct_service.php',false);
//menggunakan SOAP method
$person = array('nama'=>'astrii','umur'=>21);
$hasil = $client->call('hello', array('person'=>new soapval('return','Person',$person)));
print_r($hasil);
?>
Web Service Dengan WSDL
Dua program berikut berturut turut akan membuat web service server dan web service client
menggunakan WSDL.
<?php
/*
* File : service_wsdl.php
* Desc : program untuk membuat SOAP service
*/
require_once '../lib/nusoap.php';
//membuat instan nusoap server
$server = new nusoap_server();
//melakukan konfigurasi WSDL
$server->configureWSDL('hellowsdl',"urn:hellowsdl");
// register method
$server->register('hello', // nama method
array('name' => 'xsd:string'), // parameter input
array('return' => 'xsd:string') // parameter output
);

function hello($name){
return 'Hello, '.$name;
}
//$HTTP_RAW_POST_DATA harus berisi XML SOAP request
$HTTP_RAW_POST_DATA = isset ($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA:'';
//memproses service dan membuat XML response
$server->service($HTTP_RAW_POST_DATA);
?>
Setelah membuat program diatas, lihatlah WSDL dengan : http://url/anda/service.php?wsdl

<?php
/*
* File : client_wsdl.php
* Desc : program untuk membuat SOAP client
*/
require_once '../lib/nusoap.php';

//membuat instance client
$client = new nusoap_client('http://url/anda/service_wsdl.php?wsdl',true);
//periksa apakah ada kesalahan
$err = $client->getError();
if($err){
echo $err;
}
//memanggil SOAP method
$result = $client->call('hello', array('name'=>'rifa'));
echo 'hasil pemanggilan service adalah : '.$result;
//cek untuk fault
if($client->fault){
echo 'fault in '.$result;
}
?>


--SELESAI--

Anda mungkin juga menyukai