Indoensia Tanah Airku

Wednesday 3 June 2015

Pemrograman Android

Koneksi Android DENGAN MYSQL


      Salah satu yang mungkin sempat menjadi pertanyaan buat kita yang biasa bekerja di lingkungan web adalah, bagaimana sih caranya membangun koneksi antara Android dengan MySQL. Sebelum kita mulai ngoding, kita perlu memahami teorinya terlebih dahulu. Mungkin diagram di bawah ini dapat menjadi gambaran awal bagi kita untuk mengetahui proses koneksi antara Android dengan Web Server.


      Jadi yang pertama dilakukan adalah, Android akan mengirimkan Request ke Web Server, yang biasa dikenal dengan method HTTPRequest, yang bisa mengandung parameter. Di web server, kita perlu membuat file PHP untuk meresponse dari permintaan client. Fungsi ini biasa dikenal dengan fungsi API (Application Programming Interface) Setelah permintaan dari client (Android) diproses, maka perlu ada nilai yang harus dikembalikan. Data yang dikembalikan bisa berformat JSON ataupun XML. Pada saat Android menerima data yang dikembalikan ini, dia membutuhkan sebuah class parser untuk dapat membaca data yang dikembalikan tadi. Seperti yang tadi disebutkan, data yang dikirim kembali dapat berupa JSON atau XML.

      Untuk contoh dibawah ini, saya menggunakan class AsyncTask untuk memproses permintaan dari Android Client. Prinsip kerjanya mirip dengan AJAX, jika teman2 biasa ngoding AJAX di web application tentunya tidak akan kesulitan dalam memahami AsyncTask. Ada beberapa method penting yang harus kita perhatikan pada class AsyncTask ini      

1. onPreExecute


Method ini yang akan dijalankan pada activity yang aktif, pada saat request dikirimkan ke web server. oleh karena itu, bentuk tampilannya biasanya berupa gambar ataupun tulisan Loading...
Berikut adalah contoh snippet code nya:
                                                                                                                                             
Protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(YourActivity.this);
pDialog.setMessage("Loading profile ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
                                                                                                                                                 

2. doInBackground

Method ini yang akan memproses permintaan ke web server.

3. onPostExecute

Method ini akan dijalankan setelah proses doInBackground selesai dikerjakan. Artinya method ini yang akan menampilkan hasilnya.

Ok tanpa menunggu lama lagi, berikut adalah contoh coding mengambil string yang ada di web server. Data yang diterima kembali dari Android dalam bentuk JSON, sehingga kita akan membutuhkan class JSONObject.
                                                                                                                                             
package ngodingandroid.httprequest;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import ngodingandroid.httprequest.R.string;

public class ProfileActivity extends Activity {

TextView txtUsername;
TextView txtFullname;
TextView txtPosition;
TextView txtSubject;

private ProgressDialog pDialog;

JSONParser jsonParser = new JSONParser();

JSONObject profile;

private static final String PROFILE_URL = "http://yoururl.com/data.php";

private static final String TAG_PROFILE = "data";
private static final String TAG_USER = "username";
private static final String TAG_NAME = "fullname";
private static final String TAG_POSITION = "position";
private static final String TAG_SUBJECT = "subject";

@Override

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

txtUsername = (TextView) findViewById(R.id.username);
txtFullname = (TextView) findViewById(R.id.fullname);
txtPosition = (TextView) findViewById(R.id.position);
txtSubject = (TextView) findViewById(R.id.subject);

new LoadProfile().execute();

}

/**
* Background Async Task to Load profile by making HTTP Request
* */

class LoadProfile extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(ProfileActivity.this);
pDialog.setMessage("Loading profile ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}

/**
* getting Profile JSON
* */

protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>(1);
params.add(new BasicNameValuePair("username", user));

// getting JSON string from URL
JSONObject json = jsonParser.makeHttpRequest(PROFILE_URL, "GET",params);

try {
// profile json object
profile = json.getJSONObject(TAG_PROFILE);
} catch (JSONException e) {
e.printStackTrace();
}

return null;

}

/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog after getting all products
pDialog.dismiss();
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
// Storing each json item in variable
try {
String username = profile.getString(TAG_USER);
String fullname = profile.getString(TAG_NAME);
String position = profile.getString(TAG_POSITION);
String subject = profile.getString(TAG_SUBJECT);

// displaying all data in textview
txtUsername.setText("Username: " + username);
txtFullname.setText("Fullname: " + fullname);
txtPosition.setText("Position: " + position);
txtSubject.setText("Subject: " + subject);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

});


}
   
}

}
                                                                                                                                             
   
      Demikianlah cara sederhana untuk mendapatkan data berdasarkan parameter yang dikirim oleh Android Client. Dalam contoh di atas, kita mengirimkan nilai parameter username, yang nantinya akan diproses oleh API dan dengan format JSON akan dikembalikan data-data detail dari username tersebut.
(Sumber: androidhive.info)

0 comments:

Post a Comment

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best WordPress Themes