[diperbarui pada 12 Mei 2015]
Part 1 -- Membuat Web Service dengan NuSOAP
Pada postingan sebelumnya saya membuat web service menggunakan pemrograman PHP dengan bantuan library nuSOAP. Kali ini akan saya lanjutkan yaitu membuat web service client dengan bahasa pemrograman Java di platform Android yang akan memanggil web service yang telah saya buat sebelumnya.
Untuk keperluan ini hendaknya teman-teman sudah menguasai konsep dasar pemrograman Java dan familiar dengan lingkungan development Android SDK.
Sebagai informasi, lingkungan development saya sebagai berikut:
Xubuntu 13.04 64 bit
Oracle J2SE SDK 1.6 update 45
Eclipse Indigo + Android Developer Tools plugin 22.2.1
Android SDK, informasi lebih lanjut silakan buka http://developer.android.com
library ksoap2-android, bisa diunduh di https://code.google.com/p/ksoap2-android/
Buka Eclipse, klik File --> New --> Android Application Project untuk membuat project Android baru dan beri nama misalnya Soap_clients. Detailnya adalah seperti yang tertera di gambar berikut
Saya masih menggunakan SDK versi 2.3.3 (Gingerbread) untuk project ini karena emulator Android 2.3.3 lebih ringan untuk daripada versi yang lebih baru dijalankan di laptop saya :D.
Tambahkan baris kode berikut pada file AndroidManifest.xml agar aplikasi Android dapat mengakses jaringan
Selanjutnya edit file res/layout/main.xml untuk membuat layout form yang dapat mengakomodasi proses input sederhana melalui elemen EditText dan menampilkan hasilnya ke TextView.
Langkah yang paling penting adalah membuat client SOAPnya, pertama masukkan variabel berikut ini yang nilai2nya bisa dilihat dari file WSDL web service yang telah dibuat sebelumnya
Catatan :
10.0.2.2 adalah alamat localhost komputer yang akan diakses emulator Android karena emulator Android tidak dapat mengakses domain localhost
Kemudian masukkan nilai parameter name yang mau dikirim ke web service, sorce codenya seperti berikut
Terakhir adalah memanggil web service, dan menampilkan responnya ke suatu variabel String dengan source code seperti di bawah ini
Hasilnya dapat dilihat dalam screenshot berikut
Gimana, cukup mudah bukan?
Web Service ini dapat dikembangkan lebih kompleks lagi misalnya dengan dihubungkan ke suatu database
Oke, semoga bermanfaat
Jika ada yang kurang jelas, silakan ninggal komen ;)
PERHATIAN
melihat perkembangan saat ini untuk membuat web service saya menyarankan untuk migrasi ke RESTful web service http://www.ardhi.web.id/2015/05/web-service-php-menggunakan-slim_11.html, saya sudah tidak akan membuat artikel baru tentang pembuatan web service menggunakan SOAP
Part 1 -- Membuat Web Service dengan NuSOAP
Pada postingan sebelumnya saya membuat web service menggunakan pemrograman PHP dengan bantuan library nuSOAP. Kali ini akan saya lanjutkan yaitu membuat web service client dengan bahasa pemrograman Java di platform Android yang akan memanggil web service yang telah saya buat sebelumnya.
Untuk keperluan ini hendaknya teman-teman sudah menguasai konsep dasar pemrograman Java dan familiar dengan lingkungan development Android SDK.
Sebagai informasi, lingkungan development saya sebagai berikut:
Xubuntu 13.04 64 bit
Oracle J2SE SDK 1.6 update 45
Eclipse Indigo + Android Developer Tools plugin 22.2.1
Android SDK, informasi lebih lanjut silakan buka http://developer.android.com
library ksoap2-android, bisa diunduh di https://code.google.com/p/ksoap2-android/
Buka Eclipse, klik File --> New --> Android Application Project untuk membuat project Android baru dan beri nama misalnya Soap_clients. Detailnya adalah seperti yang tertera di gambar berikut
Saya masih menggunakan SDK versi 2.3.3 (Gingerbread) untuk project ini karena emulator Android 2.3.3 lebih ringan untuk daripada versi yang lebih baru dijalankan di laptop saya :D.
Tambahkan baris kode berikut pada file AndroidManifest.xml agar aplikasi Android dapat mengakses jaringan
<uses-permission android:name="android.permission.INTERNET"> </uses-permission>Jangan lupa untuk mengimport library ksoap2-android ke Build Path project Android.
Selanjutnya edit file res/layout/main.xml untuk membuat layout form yang dapat mengakomodasi proses input sederhana melalui elemen EditText dan menampilkan hasilnya ke TextView.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dp" android:text="Input : " /> <EditText android:id="@+id/txtInput" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text"> <requestFocus /> </EditText> <Button android:id="@+id/bOK" android:paddingTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Call Web Service" /> <TextView android:paddingTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Output :" /> <TextView android:id="@+id/txtOutput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="**output here**" android:textAppearance="?android:attr/textAppearanceSmall" /> </LinearLayout>Nanti kita akan mendapatkan tampilan seperti ini
Langkah yang paling penting adalah membuat client SOAPnya, pertama masukkan variabel berikut ini yang nilai2nya bisa dilihat dari file WSDL web service yang telah dibuat sebelumnya
String NAMESPACE = "http://10.0.2.2/soap/hello"; String METHOD_NAME = "hello"; //nama fungsi dlm web service String SOAP_ACTION = "http://10.0.2.2/nusoap/server2.php/hello"; //URL file WSDL web service String URL = "http://10.0.2.2/nusoap/server2.php?wsdl";
Catatan :
10.0.2.2 adalah alamat localhost komputer yang akan diakses emulator Android karena emulator Android tidak dapat mengakses domain localhost
Kemudian masukkan nilai parameter name yang mau dikirim ke web service, sorce codenya seperti berikut
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo pi = new PropertyInfo(); pi.setName("name"); pi.setValue(input); pi.setType(String.class); Request.addProperty(pi);
Terakhir adalah memanggil web service, dan menampilkan responnya ke suatu variabel String dengan source code seperti di bawah ini
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); //envelope.dotNet = true; //aktifkan bila web service dibuat dengan .NET envelope.setOutputSoapObject(Request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); try{ androidHttpTransport.call(SOAP_ACTION, envelope); Object response = envelope.getResponse(); String result = response.toString(); } catch (Exception e) { e.printStackTrace(); }Source code lengkapnya adalah seperti berikut File Soap_clientActivity.java
package soap.client; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.PropertyInfo; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Soap_clientActivity extends Activity { String NAMESPACE = "http://10.0.2.2/soap/hello"; String METHOD_NAME = "hello"; String SOAP_ACTION = "http://10.0.2.2/nusoap/server2.php/hello"; String URL = "http://10.0.2.2/nusoap/server2.php?wsdl"; String input = null; TextView tvOutput; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText etInput = (EditText) findViewById(R.id.etInput); Button bOK = (Button) findViewById(R.id.bOK); tvOutput = (TextView) findViewById(R.id.tvOut); bOK.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub input = etInput.getText().toString(); getSoap(); } }); } private void getSoap(){ SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo pi = new PropertyInfo(); pi.setName("name"); pi.setValue(input); pi.setType(String.class); Request.addProperty(pi); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(Request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); try { androidHttpTransport.call(SOAP_ACTION, envelope); Object response = envelope.getResponse(); String result = response.toString(); //System.out.println(result); tvOutput.setText(result); } catch(Exception e) { e.printStackTrace(); } } }
Hasilnya dapat dilihat dalam screenshot berikut
Gimana, cukup mudah bukan?
Web Service ini dapat dikembangkan lebih kompleks lagi misalnya dengan dihubungkan ke suatu database
Oke, semoga bermanfaat
Jika ada yang kurang jelas, silakan ninggal komen ;)