Rabu, 09 Juli 2008

MESSAGING WEB SERVICES USING SOAP

Puyeng juga yech disuruh bikin Paper sama Pak Adang Suhendra, yang berhubungan dengan SOAP he :D omong2 soal SOAP (sabun) jadi inget tebakan gokil nich... Sabun sabun apa yang bau hehe ? ................ jawabnya Sabuntar-sabuntar lu kentut, sih! wkwkwkwk buat ilangin stres dikit... he :D balik lagi akhirnya gw fokus untuk ngerjain tuch paper gw kutak kutik coding, tanya temen gw Ibnu Triyono akhirnya gw dapet simple ajaah pake PHP yang Open Source (GPL) gitu dech... nich gw kasih tapi kalo ada saran yang lebih baik lebih bagus karena gw masih belajar hihihi :D


MESSAGING WEB SERVICES USING SOAP

Achmad Supandi

Email : Vai_andi@bmg.go.id

Abstrak

Web Services adalah sebuah komponen layanan aplikasi yang dapat diakses melalui protokol terbuka yang memanfaatkan Web melalui Simple Object Access Protocol (SOAP) dengan bahasa Web Services Description Language (WSDL) dan teregistrasi dalam Universal Discovery Description and Integration (UDDI). Web services mendukung komunikasi antar aplikasi dan integrasi aplikasi dengan menggunakan XML dan Web. XML (eXtensible Markup Language) adalah sebuah standar untuk mendefinisikan data dalam format yang sederhana dan fleksibel.

Pada penulisan ini penulis memfokuskan pemanfaatan web melalui Simple Object Acces Protocol (SOAP). Permasalahan utama adalah disini terletak beberapa perbedaan dalam hal implementasi SOAP, di mana message SOAP yang dihasilkan oleh suatu toolkit belum tentu dapat diterima dan digunakan oleh pihak lain yang menggunakan platform berbeda. Banyak hal yang menyebabkan terjadinya masalah – masalah tersebut, dan tidak selalu hal tersebut merupakan masalah yang ada di SOAP itu sendiri, melainkan juga masalah – masalah dalam menginterpretasikan kode – kode syntax HTTP maupun syntax dari XML itu sendiri. Implementasi SOAP sendiri kemudian disadari tidaklah mudah dan sesederhana yang dibayangkan. Karena SOAP sendiri tidak lebih dari sekedar spesifikasi, yang mencoba untuk mendeskripsikan dan mendefinisikan setiap aspek dan mekanisme yang ada dalam sebuah RPC. Hal ini yang kemudian banyak membuat kerancuan dan kebingungan ketika seorang developer pertama kali mempelajari SOAP. Selain harus membiasakan diri dan menjadi fasih dengan spesifikasi SOAP, seorang developer juga harus fasih dengan spesifikasi dari tool atau program yang digunakan untuk menghasilkan sebuah message SOAP dan juga untuk membaca serta mengartikan sebuah message SOAP yang diterima. Benar, seorang developer akan memerlukan software atau tool untuk dapat berinteraksi dengan SOAP.

Dengan adanya sistem ini kita bisa dengan mudah mengirim report pertukaran data secara otomatis meskipun dari jarak yang sangat jauh dan kita dapat mengatur waktu. Sistem ini bisa diterapkan untuk individu yang ingin mendapatkan report secara otomatis maupun Instansi pemerintah atau perusahaan-perusahaan.


Kata Kunci : otomatis, soap, XML

1. PENDAHULUAN

Setelah pembahasan mengenai Web Services semakin ramai dibicarakan orang, hal ini menjadi pertanda bahwa konsep keterbukaan antar aplikasi semakin diterima dengan baik. Setiap orang semakin menyadari akan pentingnya interoperabilitas antar berbagai aplikasi lintas platform. Hal ini dipicu dan didorong oleh berbagai bentuk model bisnis baru yang mulai diterapkan dalam dunia bisnis. Adalah ecommerce atau ebusiness yang memungkinkan terjadinya transaksi antar banyak pihak tanpa dihalangi oleh batasan geografi maupun batasan platform yang digunakan yang dimanfaatkan oleh para pelaku bisnis untuk mengembangkan pasar yang tadinya tidak pernah terpikirkan.

Akan tetapi, mewujudkan cita – cita tersebut adalah sebuah jalan panjang dengan berbagai tantangan yang harus dihadapi. Era reformasi atau keterbukaan di dunia TI ternyata juga tidaklah mudah. Konsep web services akan dapat berhasil dan berjalan baik apabila banyak hal yang disyaratkan terpenuhi. Salah satu penerapan web services adalah interoperabilitas atau disingkat interop, yakni melakukan sebuah proses pengaktifan fungsi atau pemanggilan sebuah method (method call) secara remote atau biasa dikenal dengan istilah Remote Procedure Call (RPC). Interop menjadi rumit dan penuh tantangan karena banyak pihak akan saling berinteraksi, dan setiap pihak yang akan berinteroperasi haruslah memenuhi berbagai kesepakatan. Yang paling utama dalam masalah interoperabilitas adalah mengenai :

1. Protokol transport yang digunakan untuk saling mengirimkan message.

2. Mekanisme untuk mengirimkan message yang berisikan berbagai parameter untuk mengaktifkan sebuah panggilan prosedur jarak jauh. Dan menerima response dari program yang diaktifkan.

3. Mengartikan setiap pesan yang diterima.

Sesungguhnya, upaya – upaya yang dilakukan untuk mewujudkan sebuah interop yang handal telah dan terus dilakukan oleh berbagai vendor. Teknologi – teknologi seperti Distributed Component Object Model (DCOM) dari Microsoft, CORBA, Internet Inter-ORB Protocol (IIOP) dari Object Managemen Group dan masih banyak lainnya adalah contohnya. Namun, tidak ada satupun dari berbagai inisiatif dan teknologi tersebut yang dapat diterima dengan mudah oleh para developer untuk membangun aplikasi – aplikasi yang saling berinteroperasi. Tantangan dan hal – hal seperti yang disebutkan di atas terlalu menyulitkan untuk dapat diimplementasikan, dan semakin sulit ketika teknologi – teknologi tadi coba disatukan atau diintegrasikan dengan teknologi yang berasal dari platform yang berbeda.

2. METODE SOAP

Kalau sekarang konsep web services dapat diterima, dan hanya dalam kurun waktu yang sangat singkat telah dilalui sebuah kurva belajar oleh para developer untuk mempelajari dan menerima konsep ini, tentunya ada hal yang cukup istimewa di sini. Protokol yang digunakan untuk menjalankan konsep web services dikenal dengan nama Simple Object Access Protocol atau yang biasa disingkat SOAP. 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.

1. MODEL IMPLEMENTASI

Implementasi SOAP sendiri kemudian disadari tidaklah mudah dan sesederhana yang dibayangkan. Karena SOAP sendiri tidak lebih dari sekedar spesifikasi, yang mencoba untuk mendeskripsikan dan mendefinisikan setiap aspek dan mekanisme yang ada dalam sebuah RPC. Hal ini yang kemudian banyak membuat kerancuan dan kebingungan ketika seorang developer pertama kali mempelajari SOAP. Selain harus membiasakan diri dan menjadi fasih dengan spesifikasi SOAP, seorang developer juga harus fasih dengan spesifikasi dari tool atau program yang digunakan untuk menghasilkan sebuah message SOAP dan juga untuk membaca serta mengartikan sebuah message SOAP yang diterima. Benar, seorang developer akan memerlukan software atau tool untuk dapat berinteraksi dengan SOAP.

Di sinilah terjadi persaingan dalam hal implementasi SOAP, di mana beberapa vendor mengeluarkan seperangkat tool untuk menghasilkan dan menerima message SOAP seperti Microsoft yang mengeluarkan SOAP Toolkit dan sekarang sudah mencapai versi 2.0, Apache SOAP, PERL/SOAP Lite Client, dan sebagainya. Di sini terletak beberapa perbedaan dalam hal implementasi SOAP, di mana message SOAP yang dihasilkan oleh suatu toolkit belum tentu dapat diterima dan digunakan oleh pihak lain yang menggunakan platform berbeda. Banyak hal yang menyebabkan terjadinya masalah – masalah tersebut, dan tidak selalu hal tersebut merupakan masalah yang ada di SOAP itu sendiri, melainkan juga masalah – masalah dalam menginterpretasikan kode – kode syntax HTTP maupun syntax dari XML itu sendiri.

Salah satu sekian banyak Simple object acces protokol (SOAP) modul yang penulis gunakan adalah NUSOAP dari PHP_curl. CURL adalah suatu command line tool yang sangat terkenal. CURL memungkinkan kita melakukan komunikasi langsung dengan berbagai protokol terkenal di internet. CURL mendukung protokol seperti FTP (File Transfer Protocol), FTPS (FTP/SSL), HTTP (Hyper Text Transfer Protocol), HTTPS (HTTP/SSL), SCP (Secure Copy Protocol), SFTP (Secure FTP), TFTP (Trivial FTP), Telnet, dan sebagainya. Untuk lengkapnya mengenai CURL dapat dilihat di website CURL.

Sering sekali kita sebagai programmer PHP ingin menggunakan protokol-protokol ini secara customized dan belum ada library PHP yang mendukungnya. Untuk itu modul curl/libcurl adalah solusi yang paling cocok untuk kita.

Setting CURL untuk Web

1. Untuk mengaktifkan curl pada distribusi PHP kita maka perlu kita pastikan bahwa library curl sudah ada dan kita perlu edit php.ini. Pada contoh saya, setting CURL yang akan saya tunjukkan di bawah ini menggunakan distribusi php dari paket XAMPP windows. Asumsi bahwa distribusi XAMPP terinstall di folder c:\xampp.

2. Edit file php.ini yang terdapat pada direktori C:\xampp\apache\bin\php.ini dan cari baris dengan entri seperti di bawah ini :

;extension=php_curl.dll
dan hilangkan tanda titik koma di depannya sehingga menjadi :
extension=php_curl.dll
Setelah diubah, simpan file tersebut dan restart server w
eb Anda.

3. Tes di konfigurasi curl Anda dengan php_info() function dan lihat apakah modul curl sudah di-load dengan baik. Apabila modul tersebut sudah aktif maka pada informasi php_info() akan terlihat baris seperti pada gambar di bawah.

4. PENUTUP

SOAP (Simple Object Access Protocol) adalah standar untuk bertukar pesan-pesan berbasis XML melalui jaringan komputer atau sebuah jalan untuk program yang berjalan pada suatu sistem operasi (OS) untuk berkomunikasi dengan program pada OS yang sama maupun berbeda dengan menggunakan HTTP dan XML sebagai mekanisme untuk pertukaran data.

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 adalah protokol ringan yang ditujukan untuk pertukaran informasi struktur pada lingkup desentralisasi, dan terdistribusi. SOAP menggunakan teknologi XML utuk mendefinsiskan rangka kerja pemesanan terekstrensi di mana menyediakan konstruksi pesan yang dapat dipertukarkan pada protokol berbeda. Rangka kerja dirancang bebas dari model pemrograman dan spesifikasi implementasi semantik.

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

Yang patut disyukuri adalah, walaupun beberapa masalah terus ditemukan, namun jumlah kesuksesan dari hasil uji coba dan implementasi langsung di berbagai project terus menunjukkan angka yang lebih tinggi, sehingga keyakinan akan keuntungan yang dihasilkan dari implementasi SOAP dibandingkan teknologi pendahulunya tetap diyakini oleh berbagai pihak sebagai solusi yang lebih baik. Di samping tentu saja, upaya – upaya untuk menstandarisasikan mekanisme menjadi lebih universal juga terus dilakukan.

Listing Program SOAP


$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>

Daftar Pustaka

[1]Tutang, SOAP (Simple Object Access Protocol)http://www.pranata.lipi.go.id/index.php/2007/06/05/soap-simple-object-access-protocol-2/ Jun 5th 2007

[2] Madhusudhan Govindaraju, Sriram Krishnan, Kenneth Chiu, Aleksander Slominski, Dennis Gannon, Randall Bramley ” XCAT 2.0: A Component-Based Programming Model for Grid Web Services” Department of Computer Science

[3] http://www.ibnoe.web.id/2005/08/07/simple-object-access-protocol.aspx

ya kira2 gitu dech kalo ada saran yang lebih baik monggo wasalam