Home » Archives for April 2013
Sebagian besar artikel hanya copy-paste dari beberapa blog, ini hannya untuk keperluan belajar dan catatan pribadi
<?php
require_once
'nusoap/lib/nusoap.php'
;
$server
=
new
soap_server();
$server
-->register(login);
function
tes(
$param
){
$username
=
$param
[
'username'
];
$password
=
$param
[
'password'
];
$return_value
[] =
array
(
'username'
=>
$username
,
'password'
=>
$password
);
return
(
$return_value
);}
function
login(){
mysql_connect(
'localhost'
,
'root'
,
''
);
mysql_select_db(
'latihan'
);
$sql
= mysql_query(
"select tb_user.username, tb_user.password from tb_user where username=’$username' and password =’$password' "
);
$return_data_count
=mysql_num_rows(
$sql
);
//$return_data[]=array();
while
(
$row
=mysql_fetch_array(
$sql
)){
$return_data
[]=
array
(
'username'
=>
$row
[
'username'
],
'password'
=>
$row
[
'password'
]);
}
$return
[
'count'
]=
$return_data_count
;
$return
[
'data'
]=
$return_data
;
return
$return
;
}
$HTTP_RAW_POST_DATA
= isset (
$HTTP_RAW_POST_DATA
) ?
$HTTP_RAW_POST_DATA
:
" "
;
$server
->service(
$HTTP_RAW_POST_DATA
);
?>
< ?
//server.php
$db_host = "localhost";
$db_user = "root";
$db_pwd = "";
$db_name = "achedywp";
mysql_connect($db_host,$db_user,$db_pwd);
mysql_select_db($db_name);
function sql_fetchrow($q){
$r = mysql_query($q);
return mysql_fetch_assoc($r);
}
function sql_fetchrowset($q){
$r = mysql_query($q);
while($w = mysql_fetch_assoc($r)) $res[] = $w;
return $res;
}
function sql_numrows($q){
$r = mysql_query($q);
return mysql_num_rows($r);
}
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the server instance
$server = new soap_server;
// Register the method to expose
$server->register('sql_fetchrow');
$server->register('sql_fetchrowset');
$server->register('sql_numrows');
// 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);
?>
< ?
//client.php
// Pull in the NuSOAP code
require_once('nusoap.php');
// Create the client instance
$client = new soapclient('http://localhost/remotequery/server.php');
// Call the SOAP method
$q = "select post_date, post_title from wp_posts limit 0,10";
$result = $client->call('sql_fetchrowset', array('q' => $q));
if ($client->fault) {
echo '
Fault: ';
print_r($result);
echo '
';
} else {
// Check for errors
$err = $client->getError();
if ($err) {
// Display the error
echo 'Error: ' . $err . '
';
} else {
// Display the result
print_r($result);
}
}
?>
Query yang saya lakukan diatas, menghasilkan array yang siap olah sebagai berikut,
Array
(
[0] => Array
(
[post_date] => 2001-06-03 07:39:13
[post_title] => Pertemuan 1 Pengantar
)
[1] => Array
(
[post_date] => 2001-06-09 07:39:13
[post_title] => Pertemuan 2 : Urgensi Menuntut Ilmu
)
[2] => Array
(
[post_date] => 2001-06-12 07:34:35
[post_title] => Pertemuan 3 : Sumber Ilmu dalam Islam
)
[3] => Array
(
[post_date] => 2001-06-17 21:15:00
[post_title] => Pertemuan 4 : ilmu-ilmu kauniah
)
)
<?xml version=”1.0″?> |
<soap:envelope xmlns:soap=”http://www.w3.org/2001/12/soap-envelope” soap:encodingstyle=”http://www.w3.org/2001/12/soap-encoding”> |
… |
Pesan informasi, bisa mengandung |
element Header dan harus |
terdapat element Body |
… |
</soap:envelope> |
;extension=php_soap.dll
create database db; use db; CREATE TABLE IF NOT EXISTS `tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nm` varchar(200) DEFAULT NULL, `dsc` text, `dt` date DEFAULT NULL, `prc` double DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; INSERT INTO `tb` (`id`, `nm`, `dsc`, `dt`, `prc`) VALUES (1, 'A', 'BB', '2011-03-01', 100), (2, 'C', 'DD', '2011-03-22', 200);Copykan librari nusoap ke direktori lib. Kemudian buat file webservice dengan nama ws.php, tuliskan kode program berikut:
<?php function getTb(){ mysql_connect("localhost","root",""); mysql_select_db("db"); $result=mysql_query("SELECT * FROM tb"); $index=0; while ($data=mysql_fetch_array($result)){ $tblist[$index]=array( "id"=>$data['id'], "nm"=>$data['nm'], "dsc"=>$data['dsc'], "dt"=>$data['dt'], "prc"=>$data['prc'] ); $index++; } mysql_close(); return $tblist; } function insertTb($id,$nm,$dsc,$dt,$prc) { mysql_connect("localhost","root",""); mysql_select_db("db"); mysql_query("INSERT INTO tb (id, nm, dsc, dt, prc) VALUES ('".$id."','".$nm."','".$dsc."','".$dt."','".$prc."')"); return "Succeed"; } function updateTb($id,$nm,$dsc,$dt,$prc) { mysql_connect("localhost","root",""); mysql_select_db("db"); mysql_query("UPDATE tb SET nm='".$nm."',dsc='".$dsc."',dt='".$dt."',prc='".$prc."' WHERE id='".$id."'"); return "Succeed"; } function deleteTb($id) { mysql_connect("localhost","root",""); mysql_select_db("db"); mysql_query("DELETE FROM tb WHERE id = '".$id."'"); return "Succeed"; } require("lib/nusoap.php"); $server= new soap_server(); $server->configureWSDL("Serv","urn:WebServ"); $server->wsdl->addcomplextype( "outputarray", "complextype", "struct", "all", "", array( "id"=>array("name"=>"id","type"=>"xsd:string"), "nm"=>array("name"=>"nm","type"=>"xsd:string"), "dsc"=>array("name"=>"dsc","type"=>"xsd:string"), "dt"=>array("name"=>"dt","type"=>"xsd:string"), "prc"=>array("name"=>"prc","type"=>"xsd:string") ) ); $server->wsdl->addcomplextype( "outarray", "complextype", "array", "", "SOAP-ENC:Array", array(), array( array("ref"=>"SOAP-ENC:arrayType", "wsdl:arrayType"=>"tns:outputarray[]") ), "tns:outputarray" ); $server->register( "getTb", array(), array("return"=>"tns:outarray"), "urn:WebServ", "urn:WebServ#getTb", "rpc", "encoded", "" ); $server->register( "insertTb", array("id"=>"xsd:string","nm"=>"xsd:string","dsc"=>"xsd:string", "dt"=>"xsd:string","prc"=>"xsd:string"), array("return"=>"tns:outarray"), "urn:WebServ", "urn:WebServ#insertTb", "rpc", "encoded", "" ); $server->register( "updateTb", array("id"=>"xsd:string","nm"=>"xsd:string","dsc"=>"xsd:string", "dt"=>"xsd:string","prc"=>"xsd:string"), array("return"=>"tns:outarray"), "urn:WebServ", "urn:WebServ#updateTb", "rpc", "encoded", "" ); $server->register( "deleteTb", array("id"=>"xsd:string"), array("return"=>"tns:outarray"), "urn:WebServ", "urn:WebServ#deleteTb", "rpc", "encoded", "" ); $HTTP_RAW_POST_DATA=isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA : ""; $server->service($HTTP_RAW_POST_DATA); ?>Hasilnya dapat dilihat dan diakses di url: localhost/ws/ws.php
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)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)'Kabul Kurniawan','alamat'=>'Pekalongan');
$result = $client->call('ambilData');
$n=$result['count'];
$data=$result['data'];
echo '';
echo "";
for($i=0;$i<$n;$i++){
echo "";
}
echo "
Nim | Nama | Alamat |
---|---|---|
".$data[$i]['nim']." | ".$data[$i]['nama']. " | ".$data[$i]['alamat']." |
Setelah rancangan-rancangan tersebut dibuat, kita dapat langsung
mengakses data mahasiswa melalui client.php, berikut hasilnya.. :)