Integrasi PHP Web Services dan J2ME Menggunakan KSOAP2


Mungkin temen-temen sudah sering mendengar istilah Web Services khan? Nah, dengan menggunakan teknologi ini, ternyata mimpi kita untuk membangun aplikasi multi-platform bisa menjadi kenyataan.

Kali ini aku akan menjelaskan cara mengintegrasikan teknologi PHP dan J2ME menggunakan teknologi Web Services. Pada sisi PHP, aku menggunakan pustaka NuSOAP, sedangkan di J2ME aku menggunakan pustaka KSOAP2.

Berikut code PHP untuk membangun server Web Services menggunakan NuSOAP (aritmatika.php):

<?php
// include NuSOAP library
require_once('nusoap-0.7.3/lib/nusoap.php');

// Create Web Service Server
$server = new soap_server;

$server->configureWSDL('aritmatikawsdl', 'urn:aritmatikawsdl');

// Register Services (Add)
$server->register('add',                                         // method name
    array('num1' => 'xsd:string', 'num2' => 'xsd:string'),       // input parameters
    array('result' => 'xsd:string'),                             // output parameters
    'urn:aritmatikawsdl',                                        // namespace
    'urn:aritmatikawsdl#add',                                    // soapaction
    'rpc',                                                       // style
    'encoded',                                                   // use
    'Add num1 and num2'                                          // documentation
);

// Define Services
function add ($num1, $num2) {
  return $num1 + $num2;
}

// Register Services (Substract)
$server->register('substract',                                   // method name
    array('num1' => 'xsd:string', 'num2' => 'xsd:string'),       // input parameters
    array('result' => 'xsd:string'),                             // output parameters
    'urn:aritmatikawsdl',                                        // namespace
    'urn:aritmatikawsdl#substract',                              // soapaction
    'rpc',                                                       // style
    'encoded',                                                   // use
    'Substract num1 and num2'                                    // documentation
);

// Define Services
function substract ($num1, $num2) {
  return $num1 - $num2;
}

$server->service($HTTP_RAW_POST_DATA);
?>

Berikut code J2ME untuk membangun client Web Services menggunakan KSOAP2:

package org.secangkirkopipanas.me.nusoap;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

import org.ksoap2.*;
import org.ksoap2.transport.*;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.xmlpull.v1.XmlPullParserException;

/**
 * @author secangkirkopipanas
 */
public class NuSOAPClient extends MIDlet {
   private Display display;
   private String url = "http://localhost:5000/php/nusoap-service/aritmatika.php";
   private TextBox textbox = null;

   public NuSOAPClient() {
      display = Display.getDisplay(this);
   }

   public void startApp() {
      try {
         testWebService();
      } catch (Exception ex) {
         System.out.println(ex);
      }
   }

   public void pauseApp() {
   }

   public void destroyApp(boolean unconditional) {
   }

   public void testWebService() throws Exception {
      StringBuffer stringBuffer = new StringBuffer();
      TextBox textBox = null;

      // First WebService - echos name that is passed in, in this case 'Robertus Lilik Haryanto'
      String method = "add";
      SoapObject client = new SoapObject(url, method);
      client.addProperty("num1", "5");
      client.addProperty("num2", "5");
      HttpTransport transport = new HttpTransport(url);

      // Creating the Soap Envelope
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
      envelope.bodyOut = client;

      // Call the WebService
      try {
         transport.call(method, envelope);
      } catch(XmlPullParserException io) {
         System.err.println(io);
      }

      // Format the Result
      String result = envelope.getResponse().toString();
      stringBuffer.append(result);

      // display results in textbox
      textBox = new TextBox("Hasil dari 5 + 5 adalah", stringBuffer.toString(), 1024, 0);
      display.setCurrent(textBox);
   }
}

Jika temen-temen sudah berhasil, kompilasi source code di atas. Temen-temen akan melihat hasil dari aplikasi J2ME seperti gambar berikut:

Semoga temen-temen berhasil dalam mengembangkan aplikasi ini.
Good luck!

7 thoughts on “Integrasi PHP Web Services dan J2ME Menggunakan KSOAP2

  1. bagus2 menarik banget.. eh bisa yang tingkat lanjut nggak?? aq butuh bantuan… misalnya peke array of struct tapi

    Reply
  2. pak, saya sudah coba dan sukses berjalan

    saya coba server pake wso2, saya menemui error :
    expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG @4:68 in java.io.InputStreamReader@d590dbc)

    mohon bantuannya pak
    sudah 2 minggu ubek coding ama googling

    thanx

    Reply
  3. Saya pernah coba nusop di php, tapi kita harus jeli, krn di php 5 biasanya nusoap nya udah ada function soap di dlm php itu sendiri. Jadi yang di baca function soap dalam php itu bukan function soap di dalam file nusoap.

    Reply
  4. Pak, kok gx jalan.. build failed katanya..

    Error preverifying class com.wingfoot.soap.transport.J2SEHTTPTransport
    VERIFIER ERROR com/wingfoot/soap/transport/J2SEHTTPTransport.call([B)[B:
    Cannot find class java/net/URLConnection
    Build failed

    TOlong dijawab y pak… Mohon bantuannya.

    Reply

Leave a comment