Android Talk : Asynchronous HTTP Connections using Project Library

HTTP Connections adalah sebuah koneksi Request/Response based dan selalu diinisialisasi oleh client. Secara sederhana HTTP Connections dapat digambarkan ketika suatu aplikasi ingin mengambil data melalui sebuah URL, maka aplikasi itu akan menggunakan HTTP Connection.
Kebanyakan HTTP Connection berjalan sinkron dengan UI, jadi terkadang membuat UI Android menjadi tidak dapat menerima respon dari pengguna(Not Responding). Di tutorial ini kita akan belajar bagaimana cara membuat koneksi asinkron yang mengakses Twitter Public Timeline API.

Tutorial Details

  • Program : Eclipse, Android SDK,  AndroidConnections Lib
  • Topic : Asynchronous HTTP Connections using Project Library
  • Difficulty : Easy to Intermediate
  • Estimated Completion Time : About 15 minutes

Assumptions

  • Anda sudah menguasai dasar pemograman Android.
  • Anda sudah memahami basic Android Connection.
  • Anda memahami cara kerja Webservice merupakan sebuah nilai lebih.
  • Pernah menggunakan Twitter RESTful API dapat mempermudah anda dalam memahami tutorial ini.

Step 1. Creating a new project

Buatlah android project dengan spesifikasi seperti berikut:

  • Project Name : AndroidTutorialConn
  • Target/Build SDK : API 4
  • Min SDK : API 4

Step 2. Importing project library

Download AndroidConnections Lib dan extract jika anda men-download-nya dalam bentuk zip. Import project tersebut kedalam eclipse dengan cara pilih menu File -> Import -> Existing Projects into Workspace. Browse dan pilih folder project tersebut dan klik Finish.

Setelah setesai, klik kanan pada project AndroidTutorialConn lalu pilih Properties. Pada tab Android, klik tombol Add pada panel Library dan pilih project library AndroidConnections. Klik Ok.

Step 3. Building a simple User Interface

Step selanjutnya kita akan membuat layout sederhana untuk meletakan beberapa data yang kita ambil dari Twitter. Data-data tersebut berupa screen_name, name, description dan tweet dari user yang terakhir melakukan update tweet. Replace-lah code layout activity_main.xml dengan script xml dibawah ini.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >




    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />




    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/textView1"/>




    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/textView2"/>




    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/textView3"/>




</RelativeLayout>

Step 4. Using the project library to read Twitter Public timeline

Berbeda dengan HTTP Connection biasanya, HTTP asynchronous Connection berkerja dibalik User Interface yang membuat aksi Request dan Response tidak dapat disatukan.

Masuklah ke class MainActivity.java. Class ini seharusnya sudah terbentuk otomatis saat anda membuat project. Jika belum, buatlah java class dengan nama yang sama dan jangan lupa meng-extends Activity class dan meng-override method onCreate(). Lalu ubah method onCreate menjadi seperti code dibawah ini.

         public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		new ConnectionHandler(connectionResult, null,
				"http://twitter.com/statuses/public_timeline.json",
				ConnectionHandler.GET);
	}

Disana ditambahkan satu baris code untuk me-request data dari twitter. Parameter standar yang diperlukan adalah.

  1. ConnectionResult connectionResult : object dari class ConnectionResult yang mengimplementasi method gotResult(). Yaitu method yang dipanggil ketika response tiba. Penjelansan parameter method ini ada dibagian bawah.
  2. ArrayList<NameValuePair> params : parameter yang diperlukan untuk me-request suatu halaman
  3. String url : alamat halaman yang ingin di-request
  4. int Type : tipe pengiriman request atau biasa dikenal dengan Request Method. AndroidConnections menyediakan 5 pilihan method yaitu GET, POST, PUT, DELETE dan BITMAP. Bitmap digunakan untuk me-request gambar bitmap. Klik disini untuk mengetahui lebih lanjut megenai HTTP Request Method.

Lalu buatlah method seperti code dibawah ini untuk menerima Response dari code request diatas.

ConnectionResult connectionResult = new ConnectionResult() {

		@Override
		public void gotResult(String result, String message) {
			TextView txt1 = (TextView) findViewById(R.id.textView1);
			if (result != null)
				try {
					JSONArray jsonArray = null;
					jsonArray = new JSONArray(result);
					JSONObject jsonObject = jsonArray.getJSONObject(0)
							.getJSONObject("user");

					TextView txt2 = (TextView) findViewById(R.id.textView2);
					TextView txt3 = (TextView) findViewById(R.id.textView3);
					TextView txt4 = (TextView) findViewById(R.id.textView4);

					txt1.setText("@" + jsonObject.getString("screen_name"));
					txt2.setText("Full name :" + jsonObject.getString("name"));
					txt3.setText("Description : "
							+ jsonObject.getString("description"));
					txt4.setText("Tweet : "
							+ jsonArray.getJSONObject(0).getString("text"));

				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			else
				txt1.setText(message);
		}
	};

AndroidConnections Project Library dibuat untuk mengembalikan response dalam 2 parameter.

  1. result : hasil balikan dari halaman yang di-request. Jika bernilai null berarti terjadi kesalahan saat me-request halaman.
  2. message : berisi pesanan jika terjadi kesalahan dalam request.

Jika string response memiliki nilai, maka yang dilakukan aplikasi selanjutnya adalah mem-parsing data JSON sehingga bisa ditampilkan dalam bentuk text pada layout. Cara memparsing JSON diatas disesuaikan dengan bentuk response JSON dari request ke twitter.

The Results

Error? Santai.. Gunakan shortcut key Ctrl + Shift + O untuk membenarkan missing import secara otomatis. Jika anda berhasil, screenshot aplikasi ketika dijalankan akan seperti dibawah ini.


Kok cuman “Hello world!” ? Tungu sebentar dan liat hasil response-nya. Kurang lebih layout-nya akan menjadi seperti screenshot dibawah ini.

Klo requestnya gagal gimana tampilannya?

Summary

Tutorial ini hanya mengimplementasikan sedikit fungsi dari AndroidConnections Project Library. Jika anda tertarik menggunakan lebih lanjut, silahkan berikan komentar dibawah ini.

Anda bisa mendukung saya untuk tetap melakukan update tutorial dengan cara mem-follow blog saya, atau mem-follow twitter saya disini, dan atau me-request tutorial yang anda inginkan. Best regards, eSDhee

One thought on “Android Talk : Asynchronous HTTP Connections using Project Library

Leave a comment