Friday, March 9, 2012

Membuat PHP Client untuk Web Service .NET berbasis SOAP

Belum lama ini aku mencoba untuk membuat aplikasi PHP yang memanfaatkan Web Services. Pada dasarnya Web Services .NET bisa diakses melalui beberapa Protokol seperti SOAP, HTTP POST, dan HTTP GET. Awalnya aku membangun aplikasi berbasis HTTP GET dengan maksud agar tidak overkill dalam membangun aplikasi karena dengan HTTP GET aku merasa cenderung mudah. Padahal ternyata SOAP juga mudah.

Singkat cerita, Suatu saat ternyata aku menemui Web Services itu menutup protokol GET dan POST nya dan membuat aku harus mengubah program ku dari memanfaatkan HTTP GET menjadi SOAP.

Beruntung aku menggunakan function jadi tidak perlu mengubah disemua page PHP ku, cukup ubah fungsi nya saja.

Pada dasarnya menggunakan SOAP ini mudah, kita bisa menggunakan library untuk PHP seperti nusoap. Tapi kali ini aku tidak memakai nusoap. Untuk yang ingin belajar nusoap bisa belajar melalui link berikut.
http://www.codewalkers.com/c/a/Miscellaneous/Using-SOAP-with-PHP/5/

Aku menggunakan library bawaan PHP.
Pertama tentukan dahulu alamat URL dari file WSDL sang Web Service. Untuk kebanyakan Web Services .NET file WSDL tersebut ditambahkan dengan ?WSDL pada URL web service nya.
Sebagai contoh: http://example.com/metrixapi/metrix.asmx?WSDL
Hal ini cukup penting karena awalnya aku menggunakan http://example.com/metrixapi/metrix.asmx tetapi gagal terus... hehehe

Lalu kita buat instance dari SOAP Client PHP nya dengan contoh kode sebagai berikut:
$client = new SoapClient("http://example.com/metrixapi/metrix.asmx?WSDL");

Setelah itu kita siapkan parameter yang akan digunakan, sebagai contoh
$params = array();
$params["nama"] = "Bayu";

Lalu kita panggil method web Service tersebut, misalnya saja nama methodnya adalah CariCustomerByNama maka code nya adalah sebagai berikut:
$result = $client->CariCustomerByNama($params);

$result akan langsung berisi object. Sebenarnya ini jauh lebih mudah sih dibandingan waktu aku menggunakan HTTP GET dulu. Karena waktu aku memanggil halaman web dengan GET maka result yang aku dapat adalah XML, dimana XML ini harus diparsing. Nah dengan memanfaatkan SOAP resultnya langsung object.

Khusus pada web Services .NET, untuk mengambil data pada objek tersebut kita perlu menambahkan Result pada nama methodnya. Jadi pada kasus ini kita gunakan method CariCustomerByNamaResult, bukan CariCustomerByNama.
echo $result->CariCustomerByNamaResult;

Sekian tulisan singkat aku, semoga berguna...
Untuk lebih jelasnya anda bisa juga mengunjungi situs berikut.
http://metrix.fcny.org/wiki/display/tips/How+to+Create+a+PHP+Client+for+a+.NET+and+SOAP-based+Web+Service+API