School of Information Systems

Penggunaan HttpUrlConnection

Untuk menyediakan sebuah link URL pada aplikasi, kita dapat menggunakan class HttpUrlConnection agar data dalam aplikasi yang terhubung di dalam link URL dapat muncul di dalam aplikasi. Dengan menggunakan class HttpUrlConnection, hal ini akan membantu aplikasi untuk mengakses data di dalam sebuah remote URL. Dalam membuka sebuah website, tidak jarang kita menemukan sebuah website yang menampilkan sebuah pesan berupa 404 Not Found. Munculnya error ini menandakan bahwa halaman website yang kita akses tidak dapat ditemukan di dalam server. Selain 404, ada juga kode respon lainnya yang digunakan dalam website sebagai tanda keberhasilan atau kegagalan website dalam mengambil data, seperti respon 200 yang menandakan bahwa website berhasil mengambil data yang diinginkan. 

 

Kegunaan HttpUrlConnection dalam aplikasi mengikuti pola seperti berikut: 

  1. Dapatkan HttpURLConnection baru dengan memanggil URL.openConnection() dan mengirimkan hasilnya ke HttpURLConnection. 
  1. Siapkan sebuah permintaan. Properti utama permintaan adalah URI-nya. Header dari permintaan juga dapat menyertakan metadata seperti kredensial, tipe konten pilihan, dan session cookies. 
  1. Kelas akan secara optional akan mengunggah isi dari permintaan, dimana Instance harus dikonfigurasi terlebih dahulu dengan setDoOutput(true) jika menyertakan isi permintaan dan mengirimkan data dengan menulis ke aliran yang dikembalikan oleh URLConnection.getOutputStream().  
  1. Baca tanggapannya. Header dari permintaan biasanya menyertakan metadata seperti jenis dan panjang konten isi respons, tanggal yang dimodifikasi, dan session cookies. Isi respons dapat dibaca dari stream yang dikembalikan oleh URLConnection.getInputStream(). Jika respons tidak memiliki isi, metode itu akan mengembalikan stream yang kosong. 
  1. Setelah proses sebelumnya telah berhasil dilakukan, maka HttpUrlConnection akan diputuskan. Setelah badan respons dibaca, HttpURLConnection harus ditutup dengan memanggil disconnect(). Memutuskan koneksi melepaskan sumber daya yang dimiliki oleh koneksi sehingga dapat ditutup atau digunakan kembali. 

 

Sebagai contoh, untuk mengambil sebuah halaman web pada http://www.android.com/, kita dapat membuat sebuah kodingan sebagai berikut: 

URL url = new URL(“http://www.android.com/”); 

   HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

   try { 

     InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 

     readStream(in); 

   } finally { 

     urlConnection.disconnect(); 

   } 

Dalam proses response handling, HttpURLConnection akan melewati hingga lima HTTP redirect, dimana proses ini akan mengikuti pengalihan dari satu server asal ke yang lain. Implementasi ini tidak mengikuti pengalihan dari HTTPS ke HTTP atau sebaliknya. Jika respons HTTP menunjukkan bahwa terjadi kesalahan, URLConnection.getInputStream() akan menampilkan IOException. Maka dari itu, kita dapat menggunakan getErrorStream() untuk membaca respons kesalahan. Header dapat dibaca dengan cara biasa menggunakan URLConnection.getHeaderFields(). 

Contoh penggunaan HttpUrlConnection pada Flickr 

Dalam kesempatan ini, kita akan mencoba untuk mengambil data dari Flickr, sebuah aplikasi photo service, dan menampilkan daftar yang berisikan judul dari foto-foto yang telah diambil melalui website Flickr https://api.flickr.com/services/rest/?method=flickr.photos.getRecent. Pertama-tama, kita perlu menambahkan parameter tambahan untuk menspesifikasikan API key yang akan digunakan dan jumlah foto yang akan dikembalikan. Selain itu, kita juga akan menentukan bahwa data harus dikembalikan sebagai JSON dan tidak ada panggilan balik dari JSON, dimana parameter ini akan ditampilkan di bagian bawah panggilan pengujian di Flickr API Explorer seperti pada kodingan dibawah ini:

Setelah itu, kita akan menggunakan kelas HttpUrlConnection untuk membuat sebuah InputStream, dimana kita akan mengecek kode respond dan kemudian membaca kode tersebut dari InputStream menjadi sebuah String. Untuk melakukan proses ini, pertama kita akan melihat potongan kode untuk melakukan ini, kemudian kita akan memeriksa lokasi dari kode yang cocok dengan aktivitas dan struktur fragmen kita. Sumber file yang digunakan dalam kasus ini adalah MainActivity.java, PhotoListFragment.java, and FlickrPhoto.java. Daftar lengkap ada di jam akhir. Pertama, Anda akan memeriksa bagian kode tertentu. Kemudian, kita akan membuat sebuah kodingan seperti di bawah ini, dimana pada kodingan tersebut, kita akan membuat sebuah HttpUrlConnection dan memasukkan kode tersebut ke dalam baris 1 sampai 9. Pada baris 10, kita akan mendapatkan kode respons. Namun, untuk saat ini, kita hanya perlu mencatatnya. Kemudian, baris 17 hingga 20 akan mendapatkan data dari koneksi sebagai InputStream dan mengonversinya menjadi string. Setiap baris dibaca dan ditambahkan ke dalam StringBuilder(java.lang.StringBuilder). Baris 19 menggunakan metode StringBuilder.toString() untuk menempatkan pesan yang telah didownload lengkap pada string photoData. 

 

Membuat sebuah respons dan permintaan menggunakan HttpURlConnection

Referensi: 

Ferdianto