web service dengan PHP+nuSOAP

02.18 |
Kali ini lain dari biasanya, Ardhi bakal ngasih KonCod alias konsultasi coding. Menanggapi codingan yang masuk ke inbox saya, singkat cerita terdapat seorang developer yang ingin membangun web service dengan PHP+nuSOAP. Dia memiliki basis data latihan yang di dalamnya terdapat tabel tb_user sebagai berikut:

Developer tersebut memiliki script login.php yang dimaksudkan untuk service login ke basis data sebagai berikut

<?php
require_once 'nusoap/lib/nusoap.php';
$server = new soap_server();
$server->configureWSDL("latihan","http://latihansaja/");
$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);
?>


Namun saat dibuka di browser terdapat error seperti berikut ini

Setelah diselidiki, penyebabnya adalah penulisan $server-->register(login);
seharusnya adalah $server->register(login);

Setelah script diperbaiki, barulah diperoleh output yang diharapkan



Woke, segitu dulu KonCod kali ini
Selanjutnya akan saya bahas abis bagaimana menggunakan web service yang sudah dibangun tersebut :)
Salam programmer!

http://www.ardhi.web.id/2011/09/soap-server-dengan-nusoap-dan-android.html
Read more…

Remote Query Dengan NuSOAP

21.24 |

Saya mempunyai dua buah host, katakanlah host Nakula dan host Sadewa. Semua data tersimpan dalam mysql pada host Nakula. Dalam host Nakula telah terinstal pula Aplikasi Webserver lengkap dengan PHPnya.

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBhQQERUUEhQUFRUVFBcXGRcYFhQXFxgXFxkZGBgXFxgbHCYeGhsjGRUVHy8hIycpLCwsHB8xNTAqNSYrLCkBCQoKDgwOGg8PGiwkHyQsLDQpLDIsKS0pLCwsLCwsLCwsLC0sLCwsLCopLCwsLCwsLCwvLCwsLCwsLywsLCwsLP/AABEIAOIA3wMBIgACEQEDEQH/xAAcAAEAAwADAQEAAAAAAAAAAAAABQYHAwQIAgH/xABNEAABAgMEBwMICAQCCAcBAAABAgMABBEFEiExBgdBUWFxgRMikRQyQlJykqGxI0NTYoKiwcIzstHSc/A0NWOTs8Ph8RYkJVR0o/IV/8QAGwEAAgMBAQEAAAAAAAAAAAAAAAQCAwYFAQf/xAAzEQABAwEFBQcEAwEBAQAAAAABAAIDEQQSITFBBRNRcYEiMmGxwdHwI5Gh4TNS8RRCJP/aAAwDAQACEQMRAD8A3GEIQISEIQISEIQISEIQISEI6Np24xKir7rbY+8oAnkMz0gXhNM13oRQbT1yybdQ0l147wm4nxXQ/liuTmu98/wpdpA++paz8LsWCNx0VRnjGq2GEYO/rctBWS2key0n91Y651pWj/7j/wCpj+yJblyr/wCpnivQEIwJvWtaI+uSrm01+iRElK66ZxPntsL/AArSfEKI+EG5cvRamLa4RmVn672jg/LuI4oUlY8DdPzi22Tp7JTVA2+gKPorq2rkAqlelYgWOGYVrZWOyKsEIQiCsSEIQISEIQISEIQISEIQISEIQISEIQISEI68/aDbDanHVpQhIqVKNAP6nhtgQuxFd0l09lZCocXec+yRRS/xbE9SOsZ1phrbdfq3J3mm8i5k6rl6g/NxGUUqybFfnHLjDanFHEkZCu1ajgOZMXti1ck32nGjMVaLf1tTcxVLJEuj7mLhHFwjD8IEVJmXemXKIS484c6BTizxOZ6mNW0b1MtoAXOL7RX2aCUoHAqwUrpd6xOz2mFnWWns0FAI+qYSkmv3qd0H2iDE74GDAqzE53akNFmtm6pZ96hUhDIO1xYr7qLx8aRaJHUegU7aZWd4bQlPgVFXyjo2nrudNRLy6EDYXFFZ91NAPExWZjTy0ZpYSH3byjRKGgEEk5AXBePjHv1D4LysLeJWlM6nJFOfbL5uU/lAjtDVPZ32Kv8AfPf3RBaOasHnKOWi+6quPYh1Z/3i6/BPjF0M1KWejs0hDYHoIHePEgY14mFpZRGKud7JuKHeGgZ6lQLup6QOQeTydP6gxGzmpFg/wph5HtBCx8Ak/GJia1hD6tonitVPgK/OOkrT9/YhodFH90c9214WnvE9F0RsiRw7gCqNpamZtupaW08N1S2rwV3fzRU7V0ZmpX+Ow4gesU1R74qn4xr7OsFwHvtII4FSfnWJeT02l3MF3mycDeFU+I2c6RfFtaF+F774fpLS7GlbiAemP7WJWHprNydOxeVcH1au+37py/DSNL0b1xMPURNJ7BfriqmjzPnI61HGJK29WkjOpvtgNKOIWzS6eaPNPSh4xl+k2rmakaqKe1aH1jYJoPvpzTzxHGOgDHIucWyw8lv7LyVpCkkKSRUEEEEbwRgY+4846M6ZzFnqqyuqCaqaVihXT0TxHxja9EtOWLRT3DcdAqppRF4cUn0k8R1Aip8ZamI52vw1VjhCEVq9IQhAhIQhAhIQhAhIQiO0gt5qSYU88aJTgAPOUo5JSNpP9TkIM14TTEr40i0kZkGS68qgySkectXqpG/4DbGC6V6YPWi5edN1CT3Gwe6gb/vK3qPwGEcGkukjs++XXTwQgeahOxKf1OZPQDR9XmrEICZmcTVeBbZIwRuU4Nqtydm3HJoNEYqc0g57p3XW5KA0K1WOTd12ZvNMnEJyccHCvmJ4nE7BtjQbW0kkbGaDSUpCgKpZbpfP3lHZX1lGp4xXdO9awbKmJIgrFQp7ApSdob2KV97IcdmSvPKWoqWSpSjUqJJJJ2knEmANL8XZIMjYsGZ8VZ9J9Y81PVTe7Fo/Vtkio++vNXLAcIqsIRcABklXOLjUrllZVTq0obSVLWQlKRmScgI3jQjQRqzm767qnynvuHJA2pRXJI2nM8qAQeqDRINteWOp77lQ1X0W8iocVGv4QPWMd/THSMuKLDZ7iTRZHpEejyB8Tyjm262NgZU/6V19nWEzOHygXJpDpoVEolzRO1zafZ3DjnyipKVU44k+MWTRBhIS+8Uhamk1Snoo154Urzjts6Ysvd2ZZFDtHfA6EVHSsZeQG0ASTSUJrQUNOHRalhEBLIo6gZmor+1T4RbLS0RS4jtZNV9J9CoPuk7eB/6RBPWDMIFVMuU9kn5VhSWyyxnEV8RiPum47TFIMD0OBXQhH6RH5CyYXakLTcYNW1lO8bDzGRi42NpwhdEvgIV6w8w89qflyiiQhqz2uWA9k4cNErPZY5x2hjx1Vn0v1VszYLsrdadONB/Cc5geaT6w6g5xkE1KvyT91YWy82ajGhB2KSRmDvGBjUbC0mcliB57e1B2cUnYeGXzi0W5YEtbEuKnHG44AL7atoI3b0nPwMa2w7RZOKa8PmYWSt+zHQm8Pv8AMioXV/rLTOUYmSEv5JVkl3luXwyOzcL9Hme3rBekHy06KKGKVCtFCuC0H/JBjWdWusHytIl5hX06R3VH61I/eBnvGO+j0kf/AKakoZjW4/NX+EIRQm0hCECEhCECFxvvpQlS1kJSkFRJwAAFSSd1I8+6d6YKtGYKhUMoqGk8NqyPWV8BQb63PXFpbQCSaOYCniN2aG+vnHhd3mK1qz0N8ufLjoqwyQVDYteaW+W08KD0oYjaGi8UjM8vdu2qzarNAaBM5MJxOLKCMhsdI3n0d2eZFOrrK1kFZVKyiqJFUuug+dsKEH1dhO3IYZy2tTTfydHkjCqOrT9IoZtoPojcpQ8BjtEY1EmNvG85QkeIxu2dUhCEXpRIktHLHM5NMsCv0iwFEbEDFZ6JCojY0TUpZ9+bddI/htUHBTiv7UK8Yi40BKsjbecAtP0gnhKSp7OiTQNtgbMKCnJIJ6RmcWrT+cq6hvYlN481GnyT8YqkYXacxknLdG4e63+zYgyEHU/ApOwLYMq6FZpOCxvTw4jP/vHZ0msZLRDrWLLuKSMkk43eW0dRsiDi06MK8ol3pZRr3b6OBrs4Xrp6mKbOd63cHm3wPDkfNXTjdO3w5O8Rx6KBkLVdYr2SymueRB5g4RKMabTKTUqSsbikD4ppEElRSa5EHwIiWt20W30MrAAdukOUFBhQJPXExCKWRrTdeRTTipSxMc4XmA11U6i1pWfF19PZOZBVRnwX+ivjEHbmjLkrj57frgZcFDZ8ohosVgaVFr6N7vtHDHEpH6p4eG6LxPHaOzPgf7D1CpML4MYcR/U+hVdhFl0j0aCE9vL95o4kDG7XaN6fl8q1Cc0LoXXXf6m4pWytvNSJCxrZXKuXkYg+cnYofodxiPhEGPcxwc00IU3sDwWuGC0K27FYtiUpXHEoXTvNr4/AFO0dDGDT0k9IzBQqrbrSwQQciMUrSdoOBBjTtHLdMq5U1LasFj9w4j4iJbWVogJ+XD7IBeaTeTT6xvMo4nanjUelG02dbhOzHPX35FYvadgMLqt6e3MKT0D0vTaMveNA83RLqRv2LA9VVCeBqNkWWPN2iGkipCaQ8mpT5rifWbOY5jAjiBHo2WmEuIStBCkqSFJIyIIqCOkOyMulKwS3245rkhCEVK9I6FuWumUl3H1+a2kmm85JSOJUQOsd+Mr1127QNSqTn9KvkKpbHjfPQRJjbxoq5H3GkrNVrdnZmvnvPueK1nLgMegEbqpTNh2bsPZp5F15X9VeCRwiiamdH+0fXNKHdZFxH+IsYnoj+eODXBpH280JdB7jHnbi6oY+6mg5lUMO7TruiTj+mwyHM5KjTs6t5xbjhvLWoqUd5P6cI4IQi9KJCEIF4ka9qOQOxmTtLqB0Caj+YxkMa1qNmRcmkbQttfRQUn9kVS91MWf+QLn0xVWcc4BA/KP6xCRPaatXZtR9ZKD8Lv7YgY+e2rCd/M+a+i2X+FnIeSRI2BaHYTCFnza0V7KsD4Z9IjoRSx5Y4OGYVz2h7S06qY0qs7sZhVPNX307u9mOiq/CIeLZJLE3IuB0Yy6SUOckkgeAAO/DbFUhi1MAcHtydiPDiOhS9meS0sdm3A+h+y/IQhCqaVj0U0g7FXZOGrSzTHJJP7Tt8d8cGlNg+TOVSPo1+b907U/04cog4vFiPCek1sL89AABOf3FdKUP/WOlAf8Aoj3Dsxi0+i504/5375uR73uqPCPpaCkkEUINCNxGYj5jmropF10FtmoLCzlUo5bU9Mx13RSo5pSaU0tK0+ckgjps5HKGbLOYJA8deSXtMAnjLD05qH1p6L+STfaIFGpiqxTJK/TT4kKHM7otuprSTtGlyiz3mu+3xbJxH4VHwUN0WLTGyU2lZyrgqq6HWt99Ird5kXkdYxLRW2zJzbT+xKhf4tqwWPdJPMCN6wiWPBYB4ME3zqvSsI/EqBAIxBxrH7C6eSPN2mlr+VTz7tapvlKfYR3E+ITXrG/aT2j5PJvu1oUNLI9qhCfzER550bs3yibYZzC3UA+zWqvyhUMQjMpK1GtGhbZotLJsuyQtwUKWlPubypQvXedLqOkYNNTKnVqcWaqWpSlHepRJPxMbRrktPs5FLQOLzqR+FHfPxCB1jF3pZSAkqSQFpvJOxSakVB24gjgQRE4tXcVVaDQhg0XFCEIuSqQhCBCRetT1qBqfLajQPtlI9tPfT8Avxiix2JCdUw6h1GC21pWnmk1FeGERcKiimx11wK3DWDJ/w3RxQf5k/uimxpgW3aUkFIPddQFJPqq3HiFAg8jGbPMlCilQopJII3ERiNqwFk1/Q+a32y5w+K5qPJfEIR+xyV1FZHVdjZiAM33CT7I//CfGK1Fkt4f+SkyMqEdaD+hjp6O2AZtSsbqEjE8SDdA+Z4c4enjdJK2Nn9W0+1UjDI1kbpHcTX70UPCPpxspJSoUIJBG4jAjxj5hFPJEvovafYTCSfNV3FcjkehofGIiETjeY3h7cwoSMEjS06qw6a2Z2T98Duu978Q84fI9TFei8MD/APoSF3N1vAb7yRh7ycOdd0UiGrbGA8SN7rsR6hK2N5LDG7NuB9F+QhCEk6r1oDaF5tbRzQbyfZVn4K+cZBp/Y3kk+8gCiFK7RG6653qDgFXk9Iv+iE32c0jcuqD1xH5gI6WvCzcZd8DMKaUeXfR83I2Oxpr8QB0w9ljttwXZC4a4+hVv1aWv5TZzJJqpsFpXNvBP5Lh6xaYynUfaP+ksE+o6B4oV8kRq0dCQUcUlC68wFUzW5N3LNWPtHG0fmvn4IjO9UcpftJCvs23F/AI/5kXHXa9SUZTvmK+62v8AuiC1INVmZhW5lI95df2Ra3CMpZ+M4C/dd83WYl2/UaUvqtVP+XFW0btppI8nnUlcqs1w89hZ+taOY+8BnuORk9bb1601j1W2k/lvfuimRawdkBUSOO8JV5trVU8hHbSa0zTKheTdp2l3eBkv8JrwijqSQSCCCDQg4EEZgjYYn9FdNpmQVRlV9BNSyqpSSc7oGKVcR1BjRdJdF0WvKeVssrYmQkm6tJQpd3NCqgXvur5ch5eLT2l7cbIKsz4LGoQhFqXSEIQIWhaqdNBLOeTPKo06ruE5IcOFDuSrDkabyY0LS3Rrth2rQ+kA7wHpgfuHxy3R57jVNX2tEJCZedVSlEoeOVNiXT+/x3lG12Vs7CD88V07DbHQOGPzgV0iI/I0O3dE0TP0jRCVnGvor4mm3iPjFItCynWDRxBTxzSeSsjGKtNjks5xFRx+ZLb2e1xzjA48FNsJ8os0pGK5dd6m27ifkpXuxJaOv+TWep2lTVSqbzUIA+EVaxbYVKuX04g4KTsUP0O4xK23pQ26x2LLZQkkE1ugDG9QAfexhqC0RtbvSaODaU48D6FKzQPLt2BVpdWvmF8aXSQvJmG8W3gDyVTbzHxBiuxOWNayS2qWfP0S/NV9mrMHlXH/ALmImblVNLKFZg9DuI3gihEJ2i6871uuY4HX75j9Jyz1YN07TLxH6yK4YQhCqZUvo1bfkrtTUoUKKA+ChxHyJibmtH5ecKlyzyQtRJKTlU593BSfjyimx+g0huK03Wbt7bzfyORSslnvP3jHXXfg8wu5adjuy6qOJpXIjFJ5H9M46UT9maUkJ7KZHbNHA1xUOROfXHcY+LWsBIR20srtGdvrI4K20+I274HwtcL8JqNRqPceKGTOabkoodDofY+CiJV64tKh6Kkq8CD+kWrW7KdpZqlfZuNr8Tc+S4qBi96ZJ7Wx3jvlkr90JX+kdXYbqOcOXquVttlWA81meqGbuWklP2jTiPABf7I3aPO+rt27acqd7hHvIUP1j0RGkm7yzdlPY6rNNeI+glv8ZX8hiM1HH6aa/wANr+ZcTeuxmsk0r1ZgfmQv9QIrepN+k48n1mK+6tP9xiQ/iVbsJwojWr/rR72Wv+EiI7Q20JZmaSZtpLrSu6bwKrh2Lu5KA2gg4ZZYzmuGXu2jX12W1eBUn9sUeLm4tCXkN2QnxWyaRaVvWb32JKWMurFt9s9wpOV64O6etDsMUy1ta08+KJWlkf7JND7yiVDpSOponpy7I1bUA9LrqFsqxFDmUVwBO0ZHbviwv6BytpJL1lvJSc1S7lQUnhmpI6EbjSIUDe8OqtLnPHYPRZyTWPyJi2dEZuTqX2FpSPTHeR76agdaRDxaDVKkEZpH0hZBBGBGIj5hHqFLtWSZltbrABW0LzrQGN37VsbUV85I83Zge7ER3rEthco+2+0e8hVabFDJSTwIqItWnOjTauwnJMUYnFJF0D+G6rZTZU3sNikneBEa0NCp3bwqFG6LawpmQohKg40PqlnAewc0fLhGpWJrQkpsXHFdioihS7S4eAX5p605Rx285IyhlpB2XR2T6Sm9RIuEFKUqJpWpUrz61BxxjItKtH1SM04wo1CTVCvWQrFJ57DxBimjZMwmbz4cjX0W4WnoYy8LzNG1EVFMUGvDZzHxik2jZbkuq64mh2HMHiDtio6K6dTFnqAQq+1XFlRN3jd9Q8RhvBjarKtaWtaWqnvJyUg4LbVuO47iMDHFtuyWPF5mB/HVduw7XcOy/Efnos4jm7eqbqqm6O6do+77PDZs2g923rDVKuXTik4pVvG48REZGWe10bi12B1Wpa5sjQ5uSQhCK1Ykd2x5APvJbUu4FVxpXGlQOsdKP1KiDUYEYgxJpAcCRUKLgS0gGhV1m7HkZMAPBa1EVFb5rTOl2ifGOq1pRLMXuwl1C8KGqgARxFVRzWfpGzNIDM4ADsWcATvr6CuOXyiMt7RVUuO0bN9rftTzpmOIjsyvIbvLMG3RwAvDnXzXIjYC7d2gurzN08lBvLClEhISCSQkVIA3CsXu3v8AUzv/AMI/8OKCYvWm6uysd4H7BKOqrqP1iexamRx5ear2yQImjn5LHdBR/wCpSv8AjJ/WPRseetWzN+1JbgpSvdbWY9Cxp581mLJ3TzVR1qyfaWY8dqChfgsA/lJjL9Vk72dps1NA4Ft+KSofmSI3K2ZATEu60frG1o95JAPiY812bOKln23clNOJURxQoEj4ERKLFpChaOzI1y0XXhI0clnd6Vtn8JCk/wAyoy+N21qWeJmzC4jHslIeBHq+ao8riyekYTE4jVqptAo/mkcjD6m1BSFKSoZKSSlQ5EYiOOEWqhanq61guzD3kk4oOJcSUoUoJqSBihexQUmueNRTGsUrTfRzyCcW0K9me+2f9mqtB0IKenGIWXfU2tK0EpUlQUkjMKSag+IjVtN2U2rZTU82PpGhVYGxPmup/CoBXIHfFVLrq6FMA7xhBzHkslhCEWpZI0vVHaqHb8k/RSbyX2gdi21JUQOqUqpwVvjNI7Nm2i5LupdaVdWit1WBpUFJz4ExFzbworI33HVVu1vWqHp+4g1DLYbJHrklSvCqRzBjsay1dvLWdNnznWLqzvICVfMuRQVKJNSSSTUk4kk5knaYvemfdsmy0HMoUvpdH94iNKXQrL14PJ+YqhxLaM6SOSD6Xmsdi0VoFo2pP6HYYiYRMiqoBINQvSKXGbUkwtBqlxNUk5oWMMRsINQRzjOZmWU2tSFCikkgjiI4tTmkZamFSqj3HqqRwcSMQPaQPFI3xbtPrNopDw9Luq5jFJ8KjoIzO2LILu8GY8v0tdse11Nw6+f7VRhCEZdaZIQhAhIkLMtx2X8xVU7UKxQRtw2dIj4RJj3MN5poVFzGvFHCoUoZZt15vscA44AWzmgkioB2poTQ8CDlEtrknLlnhFf4jyE04Jqs/FAjq6Eyd+ZCtjaSrqe6PmT0iE122nefYYH1aFOHms0HwQfGNTsVlQZKZny/ay+2pLtGVyHn+lH6m5O/aBXsbZWeqilI+BVG4RmOpCzaNTD5HnrS2OSBePxcHhGnR2JTVy5FnFIwkeetY1j+TWg8AKJcPap5OYnwXfHSPQsZ1rmsDtZdEykd5g0V/hrIFeirviYInUci0MvMrwUjq5tFM9Zgac7xQlUusb00onxbIHMGMUtizFSr7jK/ObWU13gZK6poesWrVPpF5NOdms0bmAEcA4P4Z6klP4hE7rn0aoUTiBgaNu8/q1H4p92LR2X04pZ31Ig7ULLIQhF6USNK1N20L7sm5QodSVpByKgKOJ/Eih/CYzWO3ZVpLlnm3m/PbUFDcaZg8CKg8DEXNvCisjfccCuxpLYxk5p1g1ohZuk7UHFB90j4xGRrOn1lItSSbtCVFVIR30+lcHnJP3m1V6XuEZNHjHVC9kZddhlokIQiaqXasyQMw82ynNxxKAd14gV6VrFt1szafK25dvzJZhDYG4nEj3ezinyM4tlxDrZottQUk50KTUYbYvulzKLTkU2k0gJebIRMpHCgvcaVSQfVVj5sQODgVczFhAz9FncIQiapXasufMu828nNtxK/dINOoFI9E6TsB2TcpjRN8fh73yrHmykekbDV2lnMlXpSiK9WxWErYy/GRxBXS2e8skrwIKzWPyAhHz1fQ0hCECEhCO5ZNnmYeS2PSOJ3JGZ8P0iTWlxDRmVFzg0FxyCuuhMj2UuXFYFw3q/dTgP3HrGG6U2z5XNvP7FrN32E91H5QI2LWbbokpAtN4LeHZIA2Ip3z0ThzUIyzV9YHlk80giqEHtV7rqCCAearqepjf2OEQRAcB/v5WAt8xnl5n/Pwtq0IsfySRYaIoq5eX7a++odCqnSJ2EIiTU1V4FBRI4ZyUS82ttYqhaSlQ3hQoR4GOaEeL1eZtILGXIzLjKq1bV3VZXk5oWOYoeBruja9FrXbtizyh7FRT2Tydt6mCxurgoHYeUdHWtoh5Ux27Qq8wDUDNbWak8SnFQ/ENsZfoXpUqz5kOCpbVRLiR6SN4+8nMdRtMNfyNqM1zx9GShyK6WkNhOSUwthzNJwOxST5qxwI8DUbIjY3nTfRZu1pVLrBSXUpvtLGS0nG4TuOyuR6xhLzKkKKVApUkkEEUIIwII2EGJsfeCpljuHwXxCEIsVKt+rzTY2e9ccJMu6RfGdxWQcA5YEbRyEd7WJoH2B8rlQFSzlFEJxDd7EEU+rNcDsyypFCi56DawlSX0L4LssqoKcy3XMpBzSamqfDbWtzSDear2OBFx3Q8FTIRpOkmrVD6PKrLUlxtWJaBy39mT/ACKoRs3RnLzKkKKVpKVJNCkggg7iDiIk1wdkoPYWZr9WwpKUqKSErrdJBAVQ0N07aHCLtqmnkmYdlHMW5plSSN6kg/NBc8BEW/pIw9Zzcs82sPS5PYuIu3SFGqkuAkEV4VyB3gwllWiqWebeR5za0rHGhxB4EVHWPCLwIXrSGOBHzivm05BUu84yvzm1qQeN00r1z6x1ov2sqx0vBFpS/eZmEpv70LAui9urS6dyhxigx601FVF7brqJWPSFjt9jZrQVhclEV6NisYBo7ZRmpplkV+kcSDTYjNZ6JCjG/wCl0yG5RYyvUQOuf5QYTtsgZGTwBXQ2dGXyAcSAs1EI/Y/I+fL6EkIQgQkaDojZAl2S65RKliprhdQMcd289N0QmiGjvbKDrg+jScAfTUP2j4nDfEdra02CUmSZV3lD6ZQ9FJxDfM5nhhtw0OybESd67p7+yz+1rcGt3bevt7qjadaUG0JtTg/hI7jQ+4D5x4qOPKg2RqWqjRnyWU7VYo7MUWd6Wx/DT4Eq/FwjONXGiPl8yCsfQMkKc3KPot9aVPAHeI34CNLK6guhZmzsLiZHJCEIXTqQhCBCRiOs/QbyRwzDKfoHFd4DJpZ2cEKOW44bo26OGblEOoU24kKQsFKknEEHMGJsfdNVVLGJG0WK6t9P/Ildg+T5Os4H7JRzPsHaNme+ty1havkzyfKJa7290GgIuvJphjlepkrbkdhGfaeaCLs5y8mq5dZ7i8ykn0F8dx286x39X+shUlRiYqqX2HNTXIbUfdzGzcbyK9tiTa6n05FR3mVIUUqBSpJIKSCCCMwQcjHxG8aWaDS9rNh9laUulIKXU4pcGwLpmNlcxxyjGLbsB+Sc7N9BQdhzSob0KyI+W2kTY8OVUkRZyUdCEIsVKldH9J5iRcvsLu185BxQv2k7eYoeMX46dWZaKQLQYLblKXwCqnsuI74HAinOMshECwHFWtkc0U0Wmo0KsZ4gNWgUlRFAXWczsopAMV7S7V1MSBKkgusZhxIxSNziR5vPLllFTi56Ma0pmTAbc+naGASskLSNyV44cCD0jyjhkaqV5jsCKcl9attIwhzyN8BctNG4UnJK1YAjgrBJ6HZFf0psTyKbdYrUIV3TtKFAKTXjdUK8axe//HVkFYmPIlh9JvCiGx3xkahd0mu0isQ9i2E9bs85MOAoZK6rUNgAAS0g7VXQBXZntAPgNCScFItqA0Gp05Ke1M6MkX5xYzBbartFe+vxF0fiiX06tTtHQ0k4N5+2f6CniYstrWi3IS6UoAFE3GkDLAUHQYf5MZqtZUSSakmpO8nMxmdsWuo3QzOfLRanY9ku/UOmXPVfMIR+gVwEZtaNfkT+jWjBmTfXUNA8ivgnhvP+R37A0KKqLmBQZhvafb3Dhnyj4051jNyKSxL3Vv0pQUuNe1TNW5PjTI9ywbLdIQ+UYcPfwXEt+02xgtjOPH28Vy6eacos1rsWLvblNEpFKNJyC1D5DbyjGrKst6emA23VbjiiSoknM1UtZ3CtSf1MfEvLvTr91N5151VccSScyTsA2nICN40I0KRZrNMFPLA7Rz9qdyR8czuGswibQZrI9q0PqclI6N6PtyMuhlrJOKlbVrPnKPE/AUGyJSEIVJqnwABQJCEIF6kIQgQkIQgQuGck0PIU24kLQsUUkioIjE9OtWbkkS7LhTkvmdq2va9ZP3vHedyhE2PLVVJEJBivOmium8xZyvozebJqppRNw7yPVVxHUGNesvSSRtlrslhJURUsuUCwd6Dtp6yTUcIidMNUrcxV2UusuHEoyaWeFPMPLDhtjJbTsl+TduPIW0sGorhWnpIUMDzBi+jZMRmlKvhwOIWhaSamFJquSXeH2ThAUOCV5HkqnMxnNoWY7LruPNrbVuUkivLYRxEW/R3W3NS1EvUmGx6xo4BwX6X4gTxjQZDTqzrRR2bpQCc2phKRjwJqgnkawXntzxXlyKTumhWCwjdp3VNZ72KErbrtbcNOgVeHhEadSEvX/SH6bvoq+N2Jb5qibM9Y3H0hsqICQSTkACSeQGJjbpTU1IoNVF9zgpYA/IkH4xabK0clpQfQMob3kJ7x5qNVHxiJmGik2yuOayjRLVI8+Q5N1ZazufWq4H1Bzx4DONRnJ9iz2UoSkJCRRDaaCv8AQVzJ+Jj4tOfmlVTLsEffWpseCb3z8Irh0NmnlFTqkVOZUoqPwEce12yU9mJhJ40wH3zXbslihZ2pHADnifZQdp2muYcK1nHIDYkbAI6sXiV1foH8RxSuCQEj41Mdx5chZwvOKaaNM1Grh9kGqj0Ecdmy7RK6shpXqfnVdl+04Im0ZjToFVbL0SffoSns0esoUPROZ+Ai2MWbK2c2XXFJTTNxwivJO7kMTximW/rqSKpk2io/aOYJ5hAxPUjlGaWtbb845ffcU4rIVyFdiEjAcgI7tl2VHDjmeJ9OCz9r2u+XsjLgMv2r1pjrcW9VqSvNoyLpwcV7A9AcfO9mKTYOjr8+72bCSo5qUfNQD6S1bPmdlYteieqZ6Zo5NVYazu/WqHI+YOKseG2NgsixmZRsNMICEDYMyd6jmo8THSL2sFGrmtifKbz8lFaHaFM2a3RPfdUO+6Rifup9VNdnjWLFCELkk4lPNaGigSEIR4vUhCECEhCECEhCECEhCECEjq2jZbUygtvNpcQdigD1G48RjHahAjNZfb+pVCqqk3bh+zcqpPILHeHUK5xn1s6GzcpXtmFhI9NIvo95NQOtI9Iwi5szhmln2ZjssF5gs+2Hpc1Yecb9hakjqAaHrFmkNbU+1S8tDoH2jYr4oumNgtPQ6TmcXZdpRPpBN1XvJofjFbnNTMkutxTzfJYUPzpJ+MT3jDmFTuJG90quMa8Hh58s0r2VrT8wqO2jXnvlPB7+rcfT2o0ehNke00D8liOqdRzmyaR/ulf3wfS+VXv/ANA+BczuvM+jKDq9/RuIya11Tah3GmEcaLWf5gPhEk1qNV6U2OjJ/VyJCU1Iy4/iPvL9kIQPkowViCKWg/As7tLTyemPPmXAPVQezH5KE9axFScg7Mro0hx1ZzupUs9SP1jeLP1ZWezQhgLI2uKU5+Um78IskvLIbSEoSlCRkEgJA6DCDfAd0IFmc7vlYzYWpyZeoZhSWE7sFueAN0dT0jS9HdBZWRoWm7zn2i+8vock/hAiwQil0jnJhkLGZJCEIgrkhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECEhCECF//ZDalam host Sadewa terdapat aplikasi berbasis web juga (PHP), namun aplikasi menggunakan data yang ada di host Nakula. Jika semua aplikasi itu dibawah kekuasaan kita, tentu bukan hal yang sulit, karena dalam fitur mysql memang ada perijinan untuk membuka query dari host lain. Namun jika kita hanya menghosting web kita di sebuah peruahaan webhosting, untuk alasan keamanan biasanya pihak hosting tidak membuka koneksi mysqlnya ke host luar, hanya localhost yang diberikan. Pada keadaan seperti ini remote query dengan webservice mungkin akan sangat membantu.

Banyak cara melakukan query via webservice, mungkin bisa dengan XML-RPC, WDDL, atau menggunakan XML biasa, namun kali ini akan kita coba gunakan protokol SOAP dengan NuSOAP.
Kita bisa mengunduh NuSOAP di sini. Karena proses yang akan kita lakukan cukup sederhana, maka kita hanya memerlukan sebuah file nusoap.php saja pada paket itu untuk kita includekan pada aplikasi di sisi server (Nakula) dan client (Sadewa).
SISI SERVER (NAKULA)
File server.php ditaruh di sisi server, berisi konfigurasi database dan fungsi - fungsi sql_fetchrow(), sql_fetchrowset(), dan sql_numrows(), yang kemudian di daftarkan di SOAP.

< ?
//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);
?>

SISI CLIENT (SADEWA)
Di sisi client di taruh file client.php, untuk melakukan akses dan mengirimkan parameter query ke server.

< ?
//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
)
)

Metode ini bisa digunakan untuk banyak keperluan, tinggal anda yang harus kreatif menggunakannya.
Selamat mencoba !!
Read more…

Simple Object Access Protocol

19.56 |

Simple Object Access Protocol (SOAP)

Apa itu SOAP?
SOAP adalah singkatan dari Simple Object Access Protocol, merupakan sebuah protokol komunikasi client server yang mengirim dan menerima informasi “di atas HTTP”. Data yang dikirim dan diterima dalam format XML. SOAP hampir sama dengan protokol XMLRP, hanya saja SOAP lebih cocok digunakan untuk data kompleks yang dikirim antar client-server.
Secara konseptual SOAP dapat dianggap sebagai DCOM versi XML. SOAP merupakan mekanisme lain yang memungkinkan penggunaan remote procedure call. SOAP bersifat netral platform, netral bahasa dan tidak bergantung pada suatu objek model. Sehingga SOAP-enabled distributed application dapat menjangkau beragam operating sistem, dimana terdiri dari objek yang berasal dari vendor yang berbeda, ditulis pada bahasa yang berbeda, dan didasarkan pada objek model yang berbeda.
SOAP menjadi sangat mudah diterima oleh berbagai pihak – terutama oleh berbagai vendor TI – dikarenakan protokol ini memanfaatkan berbagai teknologi yang sudah ada sebelumnya dan sudah banyak digunakan. Misalnya untuk protokol transport, yang paling banyak digunakan adalah HTTP, walaupun dimungkinkan untuk menggunakan protokol transport lainnya. Sedangkan untuk format data atau message digunakan XML yang tidak diragukan lagi manfaat dan perannya di dalam pertukaran data. Dengan demikian, tidaklah terlalu mengherankan bila kemudian SOAP dianggap sebagai solusi penyelamat untuk mengatasi berbagai masalah yang dihadapi oleh teknologi – teknologi pendahulunya.
Arsitektur SOAP

Pesan SOAP berbentuk seperti sebuah envelope yang berisi header (optional) dan body (required). Header berisi blok informasi yang berhubungan dengan bagaimana pesan tersebut diproses. Hal ini meliputi pe-routingan dan delivery setting, authentication atau authorization assertions, and transaction contexts. Body berisi pesan sebenarnya yang dikirim dan diproses. Semua yang dapat ditampilkan dengan sintaks XML dapat dimasukkan dalam pesan body.
Setiap elemen Envelope harus berisi tepat satu elemen Body. Elemen Body dapat berisi sebanyak mungkin child nodes yang diperlukan. Isi dari elemen Body adalah pesan. Elemen Body ditentukan dalam suatu cara dimana dapat berisi valid dan wellformed XML yang telah dibatasi oleh suatu namespace (qualified).
Jika sebuah Envelope berisi elemen Header, harus berisi tidak lebih dari satu, dan harus tampak pada first child dari Envelope, sebelum elemen Body. Header dapat berisi valid, well-formed, dan dibatasi dengan namespace XML dimana hendak dimasukkan oleh pencipta pesan SOAP.
Struktur SOAP Envelop kurang lebih sebagai berikut :
<?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>
SOAP RPC, yaitu bagaimana SOAP dapat digunakan seperti halnya XML-RPC. Dalam SOAP sebenarnya dikenal 2 tipe aplikasi, yaitu RPC dan EDI (Electronic Document Exchange). SOAP RPC (atau lebih dikenal sebagai “RPC-style” SOAP) menggunakan pesan SOAP sebagai representasi nama prosedur berserta opsional parameternya dan nilai balik dari prosedur. SOAP EDI (atau dikenal sebagai “document-style” SOAP) merupakan pesan SOAP yang merepresentasikan transaksi bisnis seperti order pembelian, pembayaran pajak atau dokumen sejenis lainnya.

Gambar. Skema proses menggunakan RPC
Setiap elemen yang berada dalam Header disebut blok header. Tujuan dari blok header adalah untuk memberitahukan infomasi yang berhubungan dengan  pemrosesan pesan SOAP.
Berikut gambar posisi SOAP dalam aplikasi dan contoh struktur pesan SOAP :
SOAP Anatomi Call
Contoh Struktur Pesan SOAP

Aturan SOAP
Ada beberapa aturan yang diberlakukan pada SOAP, yakni :
  1. SOAP Envelope menggunakan namespace
  2. Default namespace untuk SOAP encoding dan data types
  3. SOAP’s Syntax Rules :
    1. SOAP harus dibuat dengan menggunakan sintaks XML
    2. SOAP harus menggunakan SOAP Envelope namespace
    3. SOAP harus menggunakan SOAP Encoding namespace
  4. SOAP tidak boleh mengandung XML Processing Instruction
Kelebihan & Kekurangan SOAP
Adapun kelebihan SOAP dapat diuraikan sebagai berikut :
  1. Menggunakan HTTP yang telah digunakan secara luas
  2. Bersifat fleksibel, mudah dikembangkan, karena berbasis XML
  3. Data in string message
Selain kelebihan, SOAP juga memiliki beberapa kekurangan, diantaranya :
  1. Parsing paket SOAP dan pemetaannya ke obyek mengurangi kinerja
  2. Tidak dapat menerapkan keamanan khusus, karena merupakan “wire protocol” yang bergantung pada HTTP
Pemrograman SOAP Client-Server
Dalam membangun sebuah sistem aplikasi berbasis web service, dibutuhkan dua komponen utama yaitu, server sebagai provider entity dan client sebagai requester entity . Sebagai contoh, di bawah ini terdapat dua listing program pada sisi server dansisi client.
Berikut contoh implementasi NuSOAP pada sisi server:
Kode Program File server.php


Berikut implementasi NuSOAP untuk sisi klien:
Kode Program File client.php

Berikut ini tampilan di web browser dari web service yang dijalankan antar dua file server.php dan client.php tersebut:
Tampilan Web Service sederhana dengan PHP:

Listing Program
$client = new soapclient(‘https://222.124.145.222/tps/service.asmx?WSDL’, true);
$result = $client->call($service_name, array(‘fStream’=>$xml_data,’Username’ => $service_username, ‘Password’=>$service_password));
//ini adalah hasilnya
$hasil = $result['CoCoCont_TesResult'];
print_r($result);
$sql_change = “UPDATE `tps_cococont_header` SET `SENT` = ’1′ WHERE `REF_NUMBER` = ‘$ref_num’ “;
$rs_change = $db_int->execute($sql_change);
if($result){
//common::alert_to(“Pengiriman data dengan Ref Number $ref_num Berhasil”, “index.php?module=xmlGenerator&action=listKirimKontainer”);
switch($hasil){
case “Proses berhasil”:
$sql_change = “UPDATE `tps_cococont_header` SET `SENT` = ’1′ WHERE `REF_NUMBER` = ‘$ref_num’ “;
$rs_change = $db_int->execute($sql_change);
echo “berhasil”;
break;
case “User Tidak Dikenal !!”:
break;
case “Validasi data XML anda tidak benar”:
Result
kontainer_xml_template.xml
xml version=”1.0″ encoding=”UTF-8″ ?>
- <DOCUMENT xmlns=”cococont.xsd“>
- <COCOCONT>
- <HEADER>
<KD_DOK>{$kd_dok}<!–KD_DOK>
<KD_TPS>{$kd_tps}<!–KD_TPS>
NuSOAP
NuSOAP adalah sebuah kumpulan class-class PHP yang memungkinkan  user untuk mengirim dan menerima pesan SOAP melalui protokol HTTP. Salah satu keuntungan dari NuSOAP adalah penggunaannya tidak membutuhkan registrasi khusus ke Sistem Operasi maupun web server karena NuSOAP bukan merupakan PHP extension. NuSOAP ditulis dalam kode PHP murni sehingga semua developer web dapat mengunakan tool ini tanpa tergantung pada jenis web server yang digunakan.
NuSOAP merupakan toolkit web service berbasis komponen. NuSOAP memiliki sebuah class dasar yang menyediakan method seperti serialisasi variabel dan pemaketan SOAP-Envelope. Interaksi web service dilakukan dengan class client yang disebut dengan class “soapclient” dan class server yang disebut dengan class “soap_server”. Class-class ini mengizinkan user untuk melakukan proses pengiriman dan penerimaan pesan-pesan SOAP dengan bantuan beberapa class-class pendukung lainnya untuk melengkapi proses tersebut.
Operasi-operasi pengiriman pesan SOAP dijalankan dengan melibatkan paramater nama operasi yang diinginkan melalui method call(). Jika web service yang dituju menyediakan  sebuah file WSDL, maka class “soapclient” akan mengacu langsung pada URL file WSDL tersebut dan menggunakan class “wsdl” untuk mem-parsing file WSDL dan mengekstrak seluruh datanya. Class “wsdl” menyediakan method-method untuk mengekstrak data per-operasi dan per-binding.
Class “soapclient” menggunakan data dari file WSDL untuk menerjemahkan  parameter-parameternya sekaligus menyusun SOAP envelope ketika user mengeksekusi suatu pemanggilan service. Ketika pemanggilan ini dieksekusi, class “soapclient” menggunakan “soap_transport_http” untuk mengirim pesan SOAP request dan menerima pesan SOAP response. Selanjutnya pesan SOAP response yang diterima di-parsing dengan menggunakan class “soap_parser” .
Berikut ini adalah diagram proses web service dengan menggunakan NuSOAP:

Gambar  Diagram proses web service dengan NuSOAP
Instalasi dan Konfigurasi NuSOAP
Instalasi dan konfigurasi NuSOAP dapat dilakukan dengan tahapan berikut:
  • Download file dari situs http://dietrich.ganx4.com/nusoap/.
  • Ekstrak file zip
  • Copy file nusoap.php ke lokasi direktori tertentu
  • Lakukan include class dalam kode PHP:
require_once(‘nusoap.php’)

Contoh Pemrograman NuSOAP
Berikut ini merupakan hasil capture dari sebuah aplikasi zodiak menggunakan web service yang dikembangkan menggunakan NuSOAP
gambar. Aplikasi server dari web service zodiak
Gambar. Aplikasi client dari web service zodiac
Read more…

Web Service Database dengan PHP NUSOAP

18.19 |
Web Service - PHP NUSOAP






Install XAMPP, kemudian buka file konfigurasi php.ini, hilangkan, atau tidak usah aktifkan (comment) baris berikut :


;extension=php_soap.dll

Restart Apache (XAMPP), kemuadian jalankan localhost/phpmyadmin, create a database db and table tb:

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
Read more…

Web Service dengan TIBCO (Server Side)

01.06 |
Tulisan ini meupakan lanjutan dari tulian saya sbelumnya tentang Web Service dan pada kesempatan saat ini saya akan coba berbagi sedikit bagaimana cara membangun Web Service disisi server. Mudah mudahan tidak ngantuk membacanya.. 
Dalam membangun sistem web service disini saya akan menggunakan TIBCO. Makhluk apakah TIBCO itu, baca aja sendiri di web resmi nya ya,,  secara umum dan yang saya tahu ada dua cara pendekatan untuk membangun projek Web Service dengan TIBCO, yang pertama bisa dengan jalan pseudo-code proses dan dengan jalan wing it . Kalau kita memilih cara pseudo-code berarti kita harus miliki : dua proses, sebuah skema yang memiliki outline input dan output, dua file WSDL, dua HTTP Connection dan dua proses definision. Satu untuk SOAP client dan satu lagi untuk SOAP server.
Oke, kita langsung saja mulai step-by-step dari pada banyak pidato seperti pak camat… 
Overview Skenario

diagram diatas merupakan skematik dari contoh yang akan kita angkat, skema tersebut saya ambil dari dokumen tutorialnya TIBCO dan berhasil membuat saya bingung, perlu mengulang beberapa kali baru mudeng, nah mudah mudahan tutorial ini bisa mengurangi kebingungan Ibu-Ibu/Bapak-bapak sekalian,
disana terdapat dua mesin Bisnis Proses, mesin yang pertama mengekspos HTTP Receiver dan melakukan SOAP request/reply ke mesin yang kedua. Mesin yang kedua terdiri dari SOAPEventSource, Java Code, dan SOAPSendReply. Client HTML melakukan posting tiga buah elemen yaitu priciple, interest rate, dan nomor bulan peminjaman. Web Service akan melakuakan perhitungan dan mengeluarkan hasil perhitungan berupa pembayaran pinjaman perbulan. Begitulah kurang lebih ceritanya.
Membuat Skema untuk SOAP Server
seperti yang telah dideskripsikan sebelumnya bahwa kita membutuhkan tiga inputan dan sebuah keluaran, maka kita harus membuat suatu XSD untuk merepresentasikan skema kita.
1.Langkah pertama buatlah tiga folder didalam root folder
Communications
WebServiceProcess
WSDL
2.setelah selesai membuat ketiga folder tersebut, masuk kedalam folder WSDL kemudian buatlah skema baru dan beri nama loanpayWS

3.Klik dua kali skema loanpayWS tersebut dan buatlah element-element yang dibutuhkan, seperti gambar dibawah ini :

4.masih didalam folder WSDL, buatlah dua buah file WSDL dan berikan nama pada masing masing file dengan AbstractDocLiteral dan DocLitConc atau bebas sekeinginan anda.
5.Selanjutnya kita akan mengkonfigurasikan file WSDL AbstracDocLiteral, double klik file tersebut kemudian lakukan seperti gambar dibawah ini :

6.pada AbstracDocLiteral, buatlah dua buah message dengan nama InputMessage dan OutputMessage dan satu buah porttype.
7.Konfigurasikan kedua format message tersebut seperti yang tampak pada gambar diatas.
1.Klik InputMessage
2.Klik tanda “+” pada part table kemudian beri nama InputString dan pada radiobutton klik pada pilihan Element
3.arahkan schema pada skema LoanpayWS yang telah dibuat sebelumnya dan pilih element “input”.
4.Klik ok, kemudian apply.
8.Lakukan seperti point 7 untuk mengkonfigurasikan OutputMessage, hanya saja element yang dipilih untuk message ini adalah “answertext”
9.selanjutnya double klik PortType dan buatlah satu file Operation dan beri nama OperationOne.

10.Konfigurasikan file OperationOne tersebut seperti gambar diatas :
1.buatlah dua buah Message Kind pada Message Table dan beri nama masing masing dengan input dan output, kemudian untuk masing-masing message kind arahkan namespace ke schema payloanWS seperti gambar diatas.
2.Klik ok, kemudian apply.
11.Kalau sudah beres, sekarang kita verifikasi format XML yang udah kita buat dengan editor tadi. Format XML yang terbentuk tampak seperti gambar dibawah ini :

12.nah, singkat kata, bereslah langkah pertama kita membuat serangkaian aturan yang sudah kita definisikan didalam WSDL. Silahkan kalau anda mau minum kopi atau ke kamar mandi dulu… :D
Membuat Process Definition
buka folder WebServiceProcess dan buatlah sebuah Process Definition kemudian berikan nama proses tersebut dengan WebSvcLanPay. Selanjutnya, Drag & Drop sebuah SOAP Event Source, Java Code Activity, dan SOAP SendReply, dan sambungkan seperti gambar dibawah ini.
Eh ada yang kelupaan, sebelumnya kita harus membuat HTTP Connection, caranya masuk kedalan folder Communications kemudian buatlah HTTP Connection dan tentukan port sesuai keinginan anda alias Bebas.

SOAP Event Source
Konfigurasikan SOAPEventSource seperti gambar dibawah ini

setelah semuanya sesuai seperti gambar diatas, klik Ok kemudian Apply
Java Code
Pada Java Code, langkah pertama yang harus dikonfigurasikan adalah menentukan parameter input dan output. Pada kasus ini parameter input kita adalah Interest,Months, dan Prin dan parameter outputnya adalah answertext.

Setelah itu kita akan membuat logic program dengan bahasa Java (Not Sunda,,haha), kurang lebih seperti dibawah ini :

klik Compile sampai muncul alert seperti diatas, kemudian klik Apply.
Langkah selanjutnya adalah menghubungkan parameter yang diterima oleh SOAPEventSource ke Java Code supaya diproses sesuai dengan logic yang telah dibuat tadi.

Setelah semuanya terhubung seperti gambar diatas, kemudian klik Apply.
SOAPSendReply
Selanjutnya, kita akan konfigurasikan SOAPSendReply. Bagian ini bertugas untuk meneruskan data/informasi yang telah diproses oleh Java Code ke Client. Data keluaran dari Java Code merupakan hasil perhitungan yang telah didefinisikan di dalam Java Code.

And…. WE ARE FINISHED WITH WEB SERVICE.. Next, On the client but not now.. hehe
mungkin sekian dan terimakasih, mohon maaf lahir batin jika terdapat banyak kekurangan, kritik dan saran langsung NGOMEN aja dibawah oke..
Nantikan postingan selanjutnya masih tentang Web Service disisi Client..
Read more…

Web Service

00.45 |


Pada tulisan ini saya akan menjelaskan secara singkat mengenai Web Service. Web service adalah sebuah metode komunikasi antara dua perangkat elektronik melalui jaringan. Hal ini dimaksudkan untuk memecahkan tiga masalah utama dalam system jaringan yaitu Firewall Traversal, kompleksitas, dan interoperabilitas.
Web service dirancang untuk mendukung interoperabilitas mesin-ke-mesin yang saling berinteraksi melalui jaringan dan memiliki antarmuka yang didefinisikan dalam format WSDL. Sistem lain yang berinteraksi dengan Web service harus mengikuti cara-cara yang telah ditentukan dalam pesan SOAP, biasanya disampaikan menggunakan HTTP dengan serialisasi XML.
Sebelum melangkah lebih jauh mengenai implementasi web service, akan dijelaskan terlebih dahulu mengenai elemen-elemen yang ada kaitannya dengan Web Service.
Arsitektur Web Service
WSDL
Web Services Description Language (WSDL) merupakan  serangkaian peraturan atau format baku suatu layanan untuk bisa berkomunikasi atau bertukar informasi dengan sistem lain.
SOAP
Simple Object Access Protocol(SOAP), adalah spesifikasi protokol yang digunakan untuk melakukan pertukaran informasi dalam Web Services pada jaringan komputer.
Jadi, secara ringkas web service digunakan untuk melakukan pertukaran data atau informasi antara suatu sistem dengan sistem lain, untuk melakukan interaksi tersebut diperlukan format baku yang didefinisikan sebelumnya di dalam WSDL agar kedua sisi dapat saling berinteraksi satu sama lain. SOAP merupakan protocol khusus yang dibutuhkan untuk mengangkut data-data yang dipertukarkan dalam web service.
Studi Kasus.
Supaya lebih faham dan mengerti, saya akan coba memberikan sebuah contoh /  kasus. Contoh ini saya ambil dari tutorial TIBCO salah satu software Web Service.

diketahui ada sebuah perusahaan PT. Ngalamun yang bergerak di bidang finance dengan layanan utamanya adalah minjamkan uang kepada customer. perusahaan ini berkantor pusat di Indonesia dan memiliki kantor cabang hampir di seluruh bagian negara di dunia. President Director perusahaan ini yang bernama Dr. Achmad Fajar menginstruksikan kepada staf nya untuk membuat sebuah aplikasi yang bisa melayani pembayaran online(Pay Loan Engine) untuk para customer. singkat kata dibuatlah aplikasi tersebut dengan biaya 5 jt USD. Untuk memudahkan proses bisnis prusahaanya, sang director menginstruksikan kembali manager IT supaya aplikasi aplikasi yang sudah ada di seluruh kantor cabang bisa terintegrasi dengan Pay Loan Engine tersebut. Tujuannya supaya setiap transaksi hanya terjadi di server kantor pusat  dan menghemat biaya pengembangan.  Untuk mengintegrasikan kasus tersebut diperlukanlah Web Service. Dengan seperti ini setiap kantor cabang tidak usah membuat kembali aplikasi perhitungan tersbut cukup hanya menyediakan interface sesuai dengan yang didefinisikan server web service.

Read more…

Menggunakan NuSOAP dalam PHP5-SOAP Enable dan Disable

21.03 |
Untuk NuSOAP dengan PHP5 yang SOAPnya masih On bisa juga digunakan NuSOAP tanpa harus medisable SOAP bawaan PHP5. yang harus dilakukan adalah 
  1. Rename class.soapclient.php menjadi class.soap_client.php
  2. Edit file nusoap.php dengan merubah isi file, rename soapclient menjadi soap_client

Untuk menggunakan NuSOAP dengan PHP5 (soap sudah disable). bisa menggunkan sample dan tutorial dari bang kurniawan dibawah ini :

Cara mudah untuk menggunakan fasilitas web service yang ada pada PHP5.
Pada dasarnya PHP5 sudah mendukung SOAP yang sudah ditambahkan dalam packege instalasinya pada saat kita install, entah itu di LAMPP, XAMPP atau aplikasi sejenis yang memudahkan kita memadukan WebServer dan Database Serta aplikasi PHP5.



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…  . 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)
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 "
NimNamaAlamat
".$data[$i]['nim']."".$data[$i]['nama']. "".$data[$i]['alamat']."
"; print_r ($result['count']); echo' '; print_r ($result['data']); ?>
 
Setelah rancangan-rancangan tersebut dibuat, kita dapat langsung mengakses data mahasiswa melalui client.php, berikut hasilnya..  :)

Nb: artikel ini hanya copy paste kalo gak salah dari http://kabulkurniawan.com/, haya saya gunakan untuk kepentingan catatan pribadi. Mohon maaf jika ada yang tersinggung.
Read more…