09071003028 artikel nusoap
TRANSCRIPT
Artikel Membangun Web Service dan Client Service
dengan menggunakan NuSOAP
Disusun Oleh :
Ovi Dyantina (09071003028)
Sistem Informasi 6B
Fakultas Ilmu Komputer
Universitas Sriwijaya
2009/2010
Daftar Isi
Daftar Isi ............................................................................................................................ i
Web Service ....................................................................................................................... 1
SOAP (Simple Object Acess Protocol) .............................................................................. 1
NuSOAP ............................................................................................................................ 9
Contoh Pemrograman SOAP Client-Server .................................................................... 11
Web Service
Web service adalah sebuah sofware aplikasi yang tidak terpengaruh oleh platform, ia akan menyediakan method-method yang dapat diakses oleh network. Ia juga akan menggunakan XML untuk pertukaran data, khususnya pada dua entities bisnis yang berbeda.
Beberapa karakteristik dari web service adalah:- Message-based- Standards-based- Programming language independent- Platform-neutral
Beberapa key standard didalam web service adalah: XML, SOAP, WSDL and
UDDI.
SOAP (Simple Object Access Protocol)
SOAP adalah sebuah XML-based mark-up language untuk pergantian pesan
diantara aplikasi-aplikasi. SOAP berguna seperti sebuah amplop yang digunakan untuk
pertukaran data object didalam network. SOAP mendefinisikan empat aspek didalam
komunikasi: Message envelope, Encoding, RPC call convention, dan bagaimana
menyatukan sebuah message didalam protokol transport.
SOAP menspesifikan secara jelas bagaimana cara untuk meng-encode header
HTTP dan file XML sehingga program pada suatu komputer dapat memanggil program
pada pada komputer lain dan mengirimkan informasi, dan bagaimana program yang
dipanggil memberikan tanggapan. SOAP memiliki tiga bagian, yaitu :
1. SOAP Envelope, yang mendefinisikan dokumen XML sebagai pesan SOAP. Element
Envelope merupakan element root yang dapat menggunakan identifier namespace
dari http://schemas.xmlsoap.org/soap/envelope/. Struktur dasar SOAP Envelope
kurang lebih seperti 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 harusterdapat element Body ...</soap:envelope>
2. Aturan encoding SOAP, yang mendefinisikan mekanisme serialisasi pesan SOAP.
Pesan SOAP yang menggunakan aturan serialisasi itu harus mendeklarasikan atribut
encodingStyle dengan nilainya berisi URI
http://schemas.xmlsoap.org/soap/encoding/.
3. 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
Pesan SOAP
Sebuah pesan SOAP adalah sebuah dokumen XML yang berisi elemen-elemen
berikut:
Envelope element yang mengidentifikasi dokumen XML sebagai sebuah pesan
SOAP.
Elemen header yang berisi informasi header. Elemen ini bersifat opsional.
Elemen body yang berisi panggilan dan merespon informasi.
Fault element yang berisi pesan kesalahan yang terjadi pada waktu proses.
Elemen ini opsional.
Berikut struktur utama pesan SOAP:
SOAP Syntax Rules
· A SOAP message MUST be encoded using XML
· A SOAP message MUST use the SOAP Envelope namespace
· A SOAP message MUST use the SOAP Encoding namespace
· A SOAP message must NOT contain a DTD reference
· A SOAP message must NOT contain XML Processing Instructions
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>
<NM_ANGKUT>{$nm_angkut}<!–NM_ANGKUT>
<NO_VOY_FLIGHT>{$no_voy_flight}<!–NO_VOY_FLIGHT>
<CALL_SIGN>{$call_sign}<!–CALL_SIGN>
<TGL_TIBA>{$tgl_tiba}<!–TGL_TIBA>
<KD_GUDANG>{$kd_gudang}<!–KD_GUDANG>
<REF_NUMBER>{$ref_number}<!–REF_NUMBER>
<!–HEADER>
- <DETIL>
{section name=list loop=$item}
- <CONT>
<NO_CONT>{$item[list].no_cont}<!–NO_CONT>
<UK_CONT>{$item[list].uk_cont}<!–UK_CONT>
<NO_SEGEL>{$item[list].no_segel}<!–NO_SEGEL>
<JNS_CONT>{$item[list].jns_cont}<!–JNS_CONT>
<NO_BL_AWB />
<TGL_BL_AWB />
<NO_MASTER_BL_AWB />
<TGL_MASTER_BL_AWB />
<ID_CONSIGNEE />
<CONSIGNEE />
<BRUTO>{$item[list].bruto}<!–BRUTO>
<NO_BC11 />
<TGL_BC11 />
<NO_POS_BC11 />
<KD_TIMBUN>{$item[list].kd_timbun}<!–KD_TIMBUN>
<KD_DOK_INOUT />
<NO_DOK_INOUT />
<TGL_DOK_INOUT />
<WK_INOUT>{$item[list].wk_inout}<!–WK_INOUT>
<KD_SAR_ANGKUT_INOUT>{$item[list].kd_sar_angkut}<!–
KD_SAR_ANGKUT_INOUT>
<NO_POL />
<FL_CONT_KOSONG>{$item[list].fl_cont_kosong}<!–FL_CONT_KOSONG>
<ISO_CODE>{$item[list].iso_code}<!–ISO_CODE>
<PEL_MUAT>{$item[list].pel_muat}<!–PEL_MUAT>
<PEL_TRANSIT>{$item[list].pel_transit}<!–PEL_TRANSIT>
<PEL_BONGKAR>{$item[list].pel_bongkar}<!–PEL_BONGKAR>
<GUDANG_TUJUAN>{$item[list].gudang_tujuan}<!–GUDANG_TUJUAN>
<!–CONT>
{/section}
<!–DETIL>
<!–COCOCONT>
<!–DOCUMENT>
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
ga
mbar. Aplikasi server dari web service zodiak
Gambar. Aplikasi client dari web service zodiac