Jumat, Februari 24, 2012

KONEKSI ANDROID WEB SERVICE - Part 5


Aplikasi Android tidak mempunyai kemampuan untuk melakukan koneksi secara langsung ke database server. Jika aplikasi Android perlu mengakses data eksternal, maka diperlukan bantuan sebuah server yang menyediakan data tersebut kepada aplikasi Android melalui jaringan komputer termasuk Internet. Salah satu cara bagi aplikasi Android untuk mengakses data eksternal adalah dengan melakukan koneksi ke suatu web service. Dengan kata lain, aplikasi Android dapat bertindak sebagai web service client.

Standar web service yang ada sekarang ini sebenarnya ada 2, yaitu SOAP web service dan RESTful web service. Untuk SOAP web service, para developer aplikasi Android dapat menggunakan library yang sudah tersedia yaitu ksoap2-android. Library ini dapat di-download dan digunakan secara gratis dari http://code.google.com/p/ksoap2-android/ yang merupakan situs resmi ksoap2-android. File yang dibutuhkan adalah  ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar.
Sebagai contoh penggunaan ksoap2-android, kita akan menyempurnakan aplikasi Kalkulator Kurs yang telah dibuat sebelumnya sehingga nilai kurs dolar yang terbaru didapatkan melalui web service yang ada di http://www.webservicex.net/ws/wsdetails.aspx?wsid=10 untuk aplikasi kita. Tiap kali aplikasi Kalkulator Kurs dijalankan, maka aplikasi itu akan melakukan koneksi ke web service untuk meng-update nilai kurs dolar dan kemudian menyimpannya sebagai settings preference sehingga kalkulasi selalu 34menggunakan nilai yang terbaru.

PENAMBAHAN KSOAP2-ANDROID DI ECLIPSE :

1.       Lakukan download file ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar dan taruhlah di suatu folder.
2.       Di Eclipse, klik kanan pada project KalkulatorKurs dan pilih Properties.
3.       Klik pada Java Build Path, kemudian pada tab Libraries. Klik pada Add External JARs dan pilih file ksoap2-android yang telah didownload sebelumnya. Klik Open untuk kembali ke Java Build Path.
4.       Klik pada tab Order and Export yang ada di sebelah kanan tab Libraries. Berikan tanda centang pada ksoap2-android library, dan kemudian pilih library tersebut dan klik tombol Up untuk menggeser urutan library tersebut sehingga berada di atas library Android 2.2. Hal ini dilakukan untuk memastikan bahwa library ksoap2-android akan diikutsertakan dalam aplikasi Kalkulator Kurs waktu di-export menjadi file APK setelah semuanya selesai. Klik OK untuk menutup Properties.
5.       Pastikan di Package Explorer bahwa library ksoap2-android sudah terdaftar di bagian Referenced Libraries.

PEMBUATAN CLASS UNTUK KONEKSI WEB SERVICE :

1.       Kita ingin membuat class baru untuk menangani koneksi ke web service Currency Convertor sebagai web service client dengan menggunakan library ksoap2-android.
2.       Untuk memastikan bahwa web service Currency Convertor memang jalan, kita bisa menggunakan aplikasi StrikeIron Web Services Analyzer untuk melakukan koneksi ke web service tersebut dan melihat hasilnya.
3.       Perhatikan bahwa lokasi WSDL untuk web service Currency Convertor ada di http://www.webservicex.net/CurrencyConvertor.asmx?WSDL yang merupakan input untuk StrikeIron Web Services Analyzer. Setelah memasukkan lokasi WSDL di bagian WSDL Location dan menekan tombol Analyze, maka akan tampil rincian web service operation. Perhatikan bahwa nama operation adalah ConversionRate yang menerima 2 input yaitu FromCurrency dan ToCurrency.
4.       Untuk melihat kurs dolar yang terakhir dari web service tersebut, pilih USD untuk FromCurrency dan IDR untuk ToCurrency, kemudian klik kanan dan pilih Invoke untuk menjalankan web service. Setelah menunggu beberapa saat, hasil akan tampil di bagian kanan.
5.       Jika ingin membaca file WSDL secara langsung, jalankan web browser dan buka http://www.webservicex.net/CurrencyConvertor.asmx?WSDL untuk melihat rinciannya. Cara membaca WSDL yang efektif adalah membacanya dari bawah ke atas. Beberapa informasi yang ada di file WSDL ini sangat dibutuhkan waktu membuat class untuk koneksi web service dengan library ksoap2-android. Informasi yang dibutuhkan dari file WSDL adalah targetNamespace, operation name, dan address location. Kita juga perlu mengetahui platform yang digunakan oleh web service apakah menggunakan teknologi Microsoft .NET atau bukan. Ekstensi .asmx pada address location meyakinkan kita bahwa implementasi web service Currency Converter menggunakan teknologi Microsoft .NET.
6.       Di Eclipse, klik kanan pada project KalkulatorKurs, kemudian New, kemudian Class untuk membuat class baru. Berikan package com.inixindo.workshop.kurs dan nama CurrencyConvertorSoap untuk class tersebut. Klik Finish.
7.       Tambahkan empat attribute berikut di dalam class CurrencyConvertorSoap untuk menentukan koneksi web service. 36Perhatikan bahwa informasi di attribute tersebut didapatkan dari informasi WSDL sebelumnya :

private static final String NAMESPACE =
"http://www.webserviceX.NET/";
private static final String METHOD_NAME = "ConversionRate";
private static final String ADDRESS =
"http://www.webservicex.net/CurrencyConvertor.asmx";
private static final boolean IS_DOT_NET = true;

8.       Tambahkan method berikut di dalam class CurrencyConvertorSoap di bawah keempat attribute di atas:

public double conversionRate(String fromCurrency, String toCurrency)
throws Exception {
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = IS_DOT_NET;
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("FromCurrency", fromCurrency);
request.addProperty("ToCurrency", toCurrency);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport =
new HttpTransportSE(ADDRESS);
androidHttpTransport.call(NAMESPACE + METHOD_NAME, envelope);
Object response = envelope.getResponse();
double resp = Double.parseDouble(response.toString());
return resp;
}

9.       Pada source code di atas, kita menggunakan berbagai class yang tersedia di library ksoap2-android untuk melakukan koneksi ke web service Currency Convertor. Perhatikan bahwa versi SOAP yang digunakan adalah versi 1.1 karena versi itulah yang masih banyak digunakan. Namun jika web service menggunakan versi 1.2 yang lebih baru, maka ubahlah SoapEnvelope.VER11 menjadi SoapEnvelope.VER12.
10.   Perhatikan pula bahwa envelope.dotNet dijadikan true karena Currency Convertor menggunakan teknologi Microsoft .NET. Bila web service tidak menggunakan Microsoft .NET, maka IS_DOT_NET perlu diubah menjadi false.
11.   Perhatikan penambahan property FromCurrency dan ToCurrency ke dalam object request sebagai input untuk web service. Nama kedua 37parameter input ini didapatkan dari file WSDL dan berupa case-sensitive sehingga kita harus memastikan bahwa huruf besar dan kecil sama persis!
12.   Sisa source code adalah untuk memasukkan object request ke dalam SOAP envelope, membuat object HttpTransportSE untuk mengirim SOAP envelope, dan memanggil method call untuk melakukan pengirimannya. Perhatikan bahwa pemanggilan call menerima parameter gabungan dari NAMESPACE dan METHOD_NAME untuk menentukan SOAP action. Jika dilihat di file WSDL, maka soapAction yang ada di file WSDL tersebut pasti sama dengan gabungan NAMESPACE dan METHOD_NAME. Beberapa baris terakhir hanya mengambil hasil response dari pemanggilan web service dan melakukan konversi ke double.
13.   Tekan Ctrl-Shift-O dan Ctrl-Shift-F untuk menambahkan import dan merapikan source code. Lakukan save terhadap class tersebut.
14.   Selesailah sudah pembuatan class untuk menangani koneksi ke web service Currency Convertor. Berikutnya, kita perlu melakukan perubahan terhadap class KalkulatorKursActivity sehingga menggunakan class CurrencyConvertorSoap tersebut untuk mendapatkan nilai kurs terbaru dan melakukan update settings preference kursDolar untuk digunakan dalam kalkulasi.

PENGGUNAAN CURRENCYCONVERTORSOAP :

1.       Koneksi ke web service Currency Convertor untuk mengupdate kursDolar ingin kita lakukan pada saat awal waktu user menjalankan aplikasi Kalkulator Kurs. Oleh karena itu, kita bisa menambahkan kodenya di dalam method onCreate() yang pasti jalan di awal. Namun, kita perlu menjalankannya sebagai Thread tersendiri agar user interface tidak hang karena koneksi ke web service bisa memakan waktu yang agak lama. Dengan menjalankan koneksi web service sebagai Thread tersendiri yang terpisah, maka koneksi web service dapat berjalan di background tanpa mengganggu Thread utama untuk user interface. Bila update berhasil ataupun koneksi ke web service gagal, maka user akan mendapatkan pesan singkat untuk memberitahunya.
2.       Di Eclipse, buka class KalkulatorKursActivity dan gantilah isi dari method onCreate() yang sudah ada menjadi berikut ini :

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Runnable webServiceClientTask = new Runnable() {
@Override
public void run() {
try {
CurrencyConvertorSoap ccs = new
CurrencyConvertorSoap();
kursDolar = (long)
ccs.conversionRate("USD", "IDR");
SharedPreferences settings = PreferenceManager
.getDefaultSharedPreferences(
KalkulatorKursActivity.this);
Editor editor = settings.edit();
editor.putString("kursDolar",
String.valueOf(kursDolar));
editor.commit();
KalkulatorKursActivity.this.runOnUiThread(
new Runnable() {
@Override
public void run() {
Toast.makeText(KalkulatorKursActivity.this,
"Kurs berhasil diupdate",
Toast.LENGTH_LONG).show();
}
});
} catch (Exception e) {
e.printStackTrace();
KalkulatorKursActivity.this.runOnUiThread(
new Runnable() {
@Override
public void run() {
Toast.makeText(KalkulatorKursActivity.this,
"Koneksi web service gagal",
Toast.LENGTH_LONG).show();
}
});
}
}
};
Thread webServiceClientThread = new Thread(webServiceClientTask);
webServiceClientThread.start();

3.       Tekan Ctrl-Shift-O dan Ctrl-Shift-F untuk menambahkan import dan merapikan source code. Lakukan save terhadap class tersebut.
4.       Source code di atas membuat object Runnable yang berisikan kode untuk menggunakan class CurrencyConvertorSoap dan memanggil method conversionRate() dengan parameter “USD” dan “IDR” sehingga web service Currency Convertor memberikan nilai kurs terbaru untuk US Dollar ke Rupiah. Hasilnya di-cast sebagai long untuk disimpan ke attribute kursDolar yang ada di class KalkulatorKursActivity. Nilai ini kemudian disimpan ke settings preference “kursDolar” sehingga tersimpan secara permanen meskipun aplikasi Kalkulator Kurs dimatikan. Bila penyimpanan ke settings preference berhasil dilakukan, maka Toast digunakan untuk menampilkan pesan ke user. Perhatikan bahwa penggunaan Toast harus dilakukan melalui method runOnUiThread() dari activity karena Thread untuk koneksi web service tidak dapat memanipulasi komponen user interface secara langsung. Hanya Thread utama untuk user interface yang dapat memanipulasi komponen user interface secara langsung.
5.       Bila terjadi masalah waktu koneksi ke web service, maka catch akan menangkap semua Exception dan menampilkan pesan ke user. Pesan Exception juga ditampilkan melalui method printStackTrace() untuk diselidiki lebih lanjut dan dapat dilihat di LogCat. Untuk menampilkan LogCat, di Eclipse pilih menu Window, kemudian Show View, kemudian Other, kemudian lakukan ekspansi Android dan pilih LogCat.
6.       Step terakhir adalah untuk mengijinkan aplikasi Kalkulator Kurs agar boleh melakukan koneksi ke Internet sehingga dapat mengakses web servicenya. Buka file AndroidManifest.xml dan pilih tab Permissions. Klik pada tombol Add dan pilih Uses Permission. Pada Name, pilihlah 40“android.permission.INTERNET”. Lakukan save.
7.       Jalankan aplikasi Kalkulator Kurs dan pastikan bahwa sudah berjalan dengan baik. Waktu menjalankannya, tunggu sesaat sampai muncul pesan bahwa kurs dolar berhasil diupdate, dan periksa hasilnya baik melalui menu Settings maupun melakukan kalkulasi.
8.       Jika aplikasi ingin langsung dicoba di phone Android Anda, klik kanan pada project dan pilih Export. Lakukan ekspansi Android dan pilih Export Android Application. Ikuti petunjuk dari wizard hingga selesai menjadi sebuah file APK. File APK ini dapat langsung di-install ke phone Android sungguhan dan kemudian dijalankan. Ada beberapa cara untuk melakukan instalasi, termasuk melalui web server. Silakan eksplorasi sendiri dan selamat mencoba!

3 komentar:

  1. I just became alert to your blog through Google, and found that it's truly informative. I’m going to watch out for brussels. I will be grateful if you continue this in future. Lots of people will be benefited from your writing. Cheers!
    Click Here : Free Download

    BalasHapus
  2. This article gives clear idea in support of the new people of
    blogging, that really how to do blogging and site-building.


    my blog post - Handphone Dengan Kamera Depan Terbaik

    BalasHapus
  3. Wah, bermanfaat nih..
    makasih gan.. :)

    BalasHapus