Anda di halaman 1dari 13

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/soapencoding"> ... Pesan informasi, bisa mengandung

element Header dan harus terdapat 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