Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Android dari Nol: Menggunakan REST API

Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Android From Scratch.
Android From Scratch: Hardware Sensors

Indonesian (Bahasa Indonesia) translation by Kurniawan Sugi Purwanto (you can also view the original English article)

Kebanyakan dari kita telah membangun dalam diri kita nafsu yang rakus akan informasi, berkat adanya internet sebagai bagian penting kehidupan kita. Jangkauan perhatian kita juga lebih pendek dari yang pernah terjadi, maka membuat aplikasi Android yang kontennya statis bisa jadi ide yang buruk. Jikaa tidak, Anda harus mempertimbangkan untuk membuat aplikasi yang menampilkan konten yang segar tiap kali pengguna membukanya.

Mungkin kedengarannya sulit, tetapi dengan semakin banyaknya website yang mengekspos sumber-sumbernya melalui REST API, sebetulnya ini pekerjaan yang cukup mudah. (Lihat Panduan Pemula untuk HTTP dan REST sebagai bacaan awal)

Di tutorial ini akan saya tunjukkan pada Anda cara menggunakan kelas dan metode yang ada di Android SDK untuk terhubung ke sever web jarak jauh dan berinteraksi dengannya menggunakan REST APInya.

1. Mengaktifkan Akses Internet

Memanfaatkan REST API jelas membutuhkan penggunaan Internet. Meskipun demikian, aplikasi Android hanya bisa mengakses interet jika memiliki izin android.permission.INTERNET. Oleh karena itu, sebelum Anda mulai menulis kode jaringan apapun, Anda harus memastikan bahwa tanda uses-permission ada di file manifest proyek Anda:

Karena android.permission.INTERNET tidak dianggap sebagai izin yang membahayakan, Anda tidak harus melakukan permintaan pada runtime perangkat yang menjalankan API Level 23 atau lebih tinggi lagi.

2. Membuat Background Thread

Platform Android tidak mengizinkan Anda menjalankan operasi jaringan di thread utama aplikasi. Oleh karena itu, semua kode jaringan Anda harus menjadi milik suatu background thread. Cara paling mudah untuk membuat thread semacam ini adalah dengan menggunakan execute() metode AsyncTask. Sebagai satu-satunya argumennya, execute() membutuhkan suatu objek yang Runable.

Jika Anda ingin belajar lebih banyak tentang menjalankan operasi di background thread, saya sarankan Anda membaca tutorial tentang operasi latar belakang ini dari seri Belajar Android dari Nol

3. Membuat suatu Koneksi HTTP

Dengan menggunakan metode openConnection() dan kelas URL Anda bisa dengan cepat mengeset koneksi ke tiap titik akhir REST. Nilai kembalian dari openConnection() harus disalurkan ke suatu instance HttpURLConnection atau HtpsURLConnection, tergantung apakah titik akhirnya diakses melalui HTTP atau HTTPS. Baik HttpURLConnection dan HttpsURLConnection memungkinkan Anda untuk melakukan operasi seperti menambahkan permintaan header atau membaca respon.

Kutipan kode berikut menunjukkan Anda bagaimana pengaturan awal koneksi dengan titik akhir root GitHub API:

Perhatikan bahwa HttpsURLConnection adalah subkelas dari kelas HttpURLConnection.

4. Menambahkan Permintaan Headers

Kebanyakan website yang menawarkan REST API ingin bisa mengidentifikasi aplikasi Anda secara unik. Cara paling mudah untuk membantu website-website tersebut adalah dengan memasukkan header unik User-Agent ke semua permintaan Anda.

Untuk menambahkan header User-Agent ke permintaan Anda, Anda harus menggunakan metode setRequestProperty() dari objek HttpURLConnection. Sebagai contoh, inilah cara mengeset header User-Agent ke my-rest-app-v0.1:

Anda bisa menambahkan banyak header ke permintaan Anda dengan memanggil metode setRequestProperty() beberapa kali. Sebagai contoh, kutipan kode berikut menambahkan header Accept dan suatu header kustom Contact-Me:

5. Membaca Respons

Begitu Anda memasukkan semua permintaan header, Anda bisa mengecek apakah Anda mendapatkan respon yang valid dengan menggunakan metode getResponseCode() dari objek HttpURLConnection.

Jika kelas HttpURLConnection mendapatkan kode respon pengalihan seperti misalnya 301, maka akan secara otomatis ditangani dan mengikuti respon pengalihannya. Oleh karenanya, biasanya Anda tidak harus menulis kode tambahan apapun untuk memeriksa pengalihannya.

Jika tidak ada kesalahan, sekarang Anda bisa memanggil metode getInputStream() untuk mendapatkan referensi ke aliran input koneksinya.

Kebanyakan REST API saat ini mengembalikan data yang diformaat sebagai dokumen JSON yang valid. Jadi, alih-alih membaca dari objek InputStream secara langsung, saya sarankan Anda membuat InputStreamReader untuk tujuan tersebut.

6. Parsing Respon JSON

Android SDK memiliki kelas yang bernama JsonReader, yang sangat memudahkan Anda untuk parsing dokumen-dokumen JSON. Anda bisa membuat instance baru kelas JsonReader dengan memasukkan objek InputStreamReader ke konstruktornya.

Cara Anda mengekstrak potongan informasi tertentu dari dokumen JSON tergantung pada strukturnya. Sebagai contoh, dokumen JSON yang dikembalikan oleh root endpoint REST API Github akan terlihat seperti ini:

Sebagaimana bisa Anda lihat, responsnya hanyalah suatu objek JSON besar yang mengandung beberapa kunci. Untuk mengekstraksi nilai dari kunci yang bernama organization_url darinya, Anda harus menulis kode berikut:

Kode diatas memroses respon JSON sebagai aliran dari token. Oleh karenanya proses tersebut hanya menggunakan memori yang sangat sedikit. Meskipun demikian, karena harus memproses setiap token tunggal satu demi satu, prosesnya bisa lama ketika menangani berbagai respon yang besar.

Setelah Anda mengekstrak semua informasi yang dibutuhkan, Anda selalu harus memanggil metode close() untuk objek JsonReader supaya melepaskan semua sumber daya yang ditahannya.

Anda juga harus menutup koneksi dengan memanggil metode disconnect() dari objek HttpURLConnection.

7. Menggunakan Metode HTTP yang Berbeda

Antarmuka HTTP berbasis REST menggunakan metode HTTP untuk menentukan tipe operasi yang harus dilakukan pada suatu sumber daya. Di langkah sebelumnya, kita memanfaatkan metode GET HTTP untuk melakukan suatu operasi baca. Karena kelas HttpURLConnection secara default menggunakan metode GET, kami tidak akan memerincinya secara eksplisit.

Untuk mengubah metode HTTP objek HttpURLConnection Anda, yang harus digunakan adalah metode setRequestMethod(). Sebagai contoh, kutipan kode berikut membuka koneksi ke suatu titik akhir yang dimiliki oleh httpbin.org dan mengeset metode HTTPnya ke POST.

Seperti yang telah Anda ketahui, permintaan POST digunakan untuk mengirimkan data ke server. Dengan menulis ke stream keluaran koneksi, Anda bisa dengan mudah menambahkan data apa saja ke tubuh permintaan POST. Meskipun demikian, sebelum melakukannya, Anda harus memastikan bahwa Anda memanggil metode setDoOutput() dari objek HttpURLConnection dan memasukkan true ke sana.

Kutipan kode berikut menunjukkan bagaimana Anda mengirimkan pasangan key-value yang sederhana ke server.

8.Caching Respons

Melakukan caching respon HTTP selalu merupakan ide yang bagus. Dengan melakukannya, Anda tidak hanya mengurangi konsumsi bandwidth aplikasi Anda, tetapi juga menjadikannya lebih responsif. Mulai API level 13 ke atas, Android SDK menawarkan suatu kelas yang disebut HttpResponseCache, yang mengizinkan Anda untuk dengan mudah melakukan caching tanpa melakukan perubahan apapun ke logika jaringan.

Untuk memasang cache bagi aplikasi Anda, panggil metode install() dari kelas HttpReponseCache. Metode ini mengekspektasikan suatu jalur mutlak yang menetapkan di mana cache harus dipasang, dan suatu angka yang menetapkan ukuran cache. Anda bisa menggunakan metode getCacheDir() jika tidak ingin menetapkan jalur absolut secara manual.

Kutipan kode berikut memasang suatu cache yang ukurannya 100,000 byte:

Sekalinya cache dipasang, kelas HttpURLConnection akan menggunakannya secara otomatis. Untuk memeriksa apakah cachenya bekerja, Anda bisa menggunakan metode getHitCount() yang mengembalikan jumlah respons HTTP yang dilayani dari cache.

Kesimpulan

Ada ribuan REST API yang tersedia untuk Anda gunakan secara gratis di aplikasi Android Anda. Dengan menggunakannya, Anda bisa membuat aplikasi Anda lebih informatif, menarik, dan kaya fitur. Di tutorial ini, Anda sudah belajar cara menggunakan kelas HttpURLConnection untuk mengonsumsi REST API . Anda juga sudah belajar cara membuat suatu cache respon HTTP yang menjaga pemakaian bandwidth aplikasi Anda tetap rendah.

Jika menurut Anda penggunaan HttpURLConnection cukup sulit, Anda mesti mencoba library pihak ketiga seperti Volley. Library seperti ini menggunakan kelas HttpURLConnection secara internal, tetapi menyediakan banyak metode bagus yang memungkinkan Anda membuat kode yang lebih ringkas dan mudah dibaca.

Untuk mempelajari lebih lanjut tentang networking di platform Android, Anda bisa merujuk ke panduan Operasional Jaringan Android.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.