Belajar WSDL di Android: mengonversi suhu

Oke, kelanjutan dari belajar soap alias WSDL (entah sebutan mana yang lebih tepat) di tulisan kemarin, mari kita lanjutkan ke tahapan berikutnya: mengonversi suhu dari aplikasi android. Kali ini tidak lagi menggunakan pak pos alias postman.

Sebelumnya disclaimer dulu. Pada tulisan kali ini, sebagian (besar) kode yang ditulis dicontek dari tutorial di sini. Jadi sebagian (besar) kode yang ditulis saya masih belum paham, yang penting jalan saja dulu aplikasinya :D.

Kembali ke laptop. Agar bisa mengakses WSDL dari Android dengan mudah, kita membutuhkan pustaka alias librari. Salah satu librari yang bisa dipakai (dan sampai saat ini satu-satunya yang ditemukan dari hasil googling) adalah ksoap2-Android. Untuk itu, sebelum melakukan tindakan ngoding, mari masukkan dulu librarinya di berkas build.gradle (Module: app).

Pertama-tama, kita tambahkan parameter (atau fungsi?) dengan nama repositories. Lalu diisi dengan alamat maven si ksoap2-android.

Setelah itu, tambahkan librarinya di bagian dependencies:

Jangan lupa untuk sinkronisasi berkasnya supaya si librari tersebut diunduh oleh Android Studio. Jika sukses, biasanya di tab Gradle Console akan ada tulisan BUILD SUCCESSFUL. Kalau ada galat alias error, silakan cari sendiri galatnya. Bisa jadi koneksi internetnya bermasalah, atau bisa juga ada saltik.

Jika librari kSoap2 sudah yakin terpasang, langkah selanjutnya adalah memanfaatkan librari itu untuk mengonsumsi data berbasis wsdl ini. Contohnya masih sama dengan tulisan sebelumnya, yakni konversi suhu dari web service w3school.

Dari tutorial ini, ada beberapa langkah untuk mendapatkan data dari WSDL. Yakni membuat dan konfigurasi envelope, buat request dan mengirimkan request itu ke situs berbasis wsdl, mendapatkan data dari request, dan menampilkan data keluarannya.

Tapi, sebelumnya kita siapkan dulu dua method untuk membuat envelope dan request. Di sini kita gunakan SOAP 1.1, makanya di envelopnya ditulis SoapEnvelope.VER11.

Untuk request, kita buat method dengan keluaran HttpTransportSE. Methodnya seperti di bawah ini.

Di sini ada tiga variabel yang digunakan. Yang pertama mengenai proksi (kita tidak pakai proksi, makanya ditulis NO_PROXY), lalu alamat webservice yang akan diakses (yang berakhiran .asmx), dan batas timeout pemanggilan url dalam satuan milidetik. Untuk MAIN_REQUEST_URL nanti kita isikan alamat dari w3school:

Oke, persiapan sudah selesai. Sekarang kita lakukan langkah-langkah yang sudah disebutkan di atas dalam sebuah method, misalkan namanya ubahSatuan. Kedua method di persiapan tadi akan dipanggil di method ini.

Parameter SOAP_ACTION dll yang digunakan sebagai berikut:

Oke, jika tidak ada masalah, kita tinggal panggil method ubahSatuan(value, methodName). Agar aplikasi tidak crash, method ini harus dipanggil di thread terpisah. Karena itu kita gunakan AsyncTask, karena sampai saat ini saya belum tahu apakah retrofit bisa digunakan atau tidak.

Dari kelas AsyncTask ini bisa dilihat, hasil dari method ubahSatuan akan dimasukkan ke data. Lalu jika tidak null, data akan ditampilan di TextView. Untuk kode lengkapnya bisa dilihat di repo ini, siapa tahu ada yang senasib dengan saya :D.

Nah, ribet kan berurusan dengan data wsdl mah? Mending pakai Restful biasa kan? 😀

Ada komentar?

%d bloggers like this: