Artikel ini hanyalah sekedar coretan, karena saya yang biasa lupa, dari pada saya harus bersusah payah untuk mencarinya kembali, lebih baik saya dokumentasikan di blog saya ini..
Seharian ini, saya mencoba bagaimana untuk mengirimkan dan menerima file XML yang dikirimkan melalui web. Ini adalah keperluan yang agak mendadak, saya harus mempersiapkan halaman web untuk koneksi dengan operator Seluler sebagai SMS content provider, sebelumnya saya hanya berhubungan dengan data SMS dari dan ke Operator dengan menggunakan hit URL biasa dengan menggunakan GET, Untuk pertama kali ini saya harus mengerjakan hal yang berbeda, yaitu mengirimkan dan menerima data XML yang dikirim kan menggunakan metode POST. lumayan menguras energi, karena saya jarang berkutat dengan PHP jadi lumayan agak lama memecahkan masalah ini. Akhirnya saya menemukan beberapa artikel yang bagus, berikut ini saya akan menulis ulang dengan berbagai penyesuaian sesuai dengan kebetuhan saya.
Ide dasarnya adalah begini, kita punya halaman web yang bisa memanggil web service lain, kita bisa melakukan posting data dalam bentuk XML kemudian mendapatkan reponsnya.
Dengan PHP, kita bisa melakukan posting data dengan mudah, kemudian untuk mengakses web service ke server tujuan, kita bisa menggunakan library PHP yaitu CURL. Dengan menggunakan CURL,untuk melakukan posting data XML, kita tinggal membuat file XML nya, kemudian menentukan URL yang mau kita tuju dan mengatur portnya.
Sebagai contoh, kita ingain melakukan posting data XML yang simple seperti dibawah ini:
Untuk setengah hari pertama, lumayan atas bantuan teman, saya bisa mengambil data berupa data XML, Data XML yang dikirimkan dengan menggunakan POST oleh operator dapat saya parsing dan saya ambil datanya. Hari kedua, lebih melelahkan, hampir seharian mencari cara bagaimana mengirimkannya. Sudah banyak sumber dari internet yang saya coba, ternyata hasilnya selalu gagal.
Akhirnya berhasil menemukan juga cara bagaimana mengirimkan data XML menggunakan POST dengan memanfaatkan PHP CURL, berikut ini caranya:
Pertama-tama, agar web server anda dapat menggunakan php-curl, pastikan dahulu bahwa apache sudah terinstall PHP Curl. Karena saya menggunakan php5, dalam debian paketnya adalah php5-curl
Berikut ini adalah contoh simple XML yang akan kita lakukan kirimkan :
<?xml version=”1.0″?>
<Document>
<Message>
INI DATAKU
</Message>
</Document>
untuk mengirimkan XML tersebut dengan menggunakan POST, kode PHP nya dapat dibuat seperti dibawah ini :
<?php
$xml = "<?xml version=\"1.0\"?>"
."<Document>"
."<Message>INI DATAKU</Message>"
."</Document>";
$url ='http://www.tujuan.com/direktori/filetujuan.php';
$port = 80;
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
$data = curl_exec($ch);
curl_close($ch);
return $data;
?>
Kode diatas adalah kode untuk melakukan POST ke URL lain dengan memberikan data berupa XML. Anda bisa juga membuat halaman web sendiri yang digunakan untuk menerima data XML terbeut, dengan begitu anda bisa bereksperimen dengan data XML anda, sekaligus anda menyiapkan halaman web yang bisa menerima data XML dari server lain.
Berikut ini langkah-langkah untuk membuat halaman web yang bisa menerima data XML yang di POST oleh server lain:
Pertama-tama, pastikan anda sudah memberi nilai on untuk variabel always_populate_raw_post_data pada php.ini, untuk Debian, file konfigurasi php.ini ada di /etc/php5/apache2/php.ini
always_populate_raw_post_data = On
Kode php yang simple untuk halaman web yang dapat menerima data XML adalah :
<?php
$xml = $HTTP_RAW_POST_DATA;
print((trim($xml)));
?>
Untuk melakukan parsing dari data XML tersebut, anda bisa menggunakan xml_parser. PHP sudah menyediakan xml parser. Berikut ini adalah contoh simple untuk melakukan parsing dari data XML diatas:
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
xml_parser_free($p);
$dataasli = $vals[1][value];
Ok.. semua berjalan sempurna…
Terima kasih untuk yang selalu memberi semangat baru untukku....
Recent Comments