Penggunaan contoh diatas kurang dianjurkan karena tidak efesien, penggunaan yang dianjurkan adalah menggunakan fungsi json_encode echo “{nama:narotama}”; result = Array() definisi result sebagai array result[„nama‟] = “narotama”; membuat array dengan key

Modul
Client Server Android – JSON

JSON adalah JSON (JavaScript Object Notation) adalah format pertukaran data (lightweight datainterchange format), mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat
(generate) oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman JavaScript,
Standar ECMA-262 Edisi ke-3 – Desember 1999. JSON merupakan format teks yang tidak bergantung
pada bahasa pemprograman apapun karena menggunakan gaya bahasa yang umum digunakan oleh
programmer keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python dll. Oleh karena sifat-sifat
tersebut, menjadikan JSON ideal sebagai bahasa pertukaran-data.

JSON terbuat dari dua struktur:
1. Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek
(object), rekaman (record), struktur (struct), kamus (dictionary), tabel hash (hash table), daftar
berkunci (keyed list), atau associative array.
2. Daftar nilai terurutkan (an ordered list of values). Pada kebanyakan bahasa, hal ini dinyatakan
sebagai larik (array), vektor (vector), daftar (list), atau urutan (sequence).
Dalam artinya lain, JSON dapat kita katakan sebagai pemaketan data yang bertujuan untuk
menjembatani antara antar muka dengan service background seperti database server, sama halnya
dengan penggunaan xml. Dalam Json, yang kita perlu pahami hanya dua kunci yaitu key dan value. key
kalau digambarkan secara sederhana adalah nama field dan value adalah isinya. Pada dasarnya Json
sendiri adalah data berbentuk String untuk parsing-parsing data, seperti pada contoh dibawah ini :

echo “{nama:narotama}”;
Penggunaan contoh diatas kurang dianjurkan karena tidak efesien, penggunaan yang dianjurkan
adalah menggunakan fungsi json_encode
$result = Array() //definisi result sebagai array
$result[„nama‟] = “narotama”; //membuat array dengan key nama valuenya narotama
echo json_encode($result); //mengubah array kedalam format json (string)
Menggunakan object
$result = new stdClass();
$result->nama = “narotama”;
echo json_encode($result);

Pada sesi pembahasan modul ini mencoba untuk membuat antar koneksi, yang kemudian akan
membuat aplikasi Android yang datanya akan disimpan pada sebuah server. Bisa local (localhost) atau di
internet.
Sebenarnya Android memiliki fasilitas untuk menyimpan data yaitu:
1. Shared preferences. Terdiri dari key dan value data. Model ini biasanya untuk menyimpan settingan
(pengaturan) sebuah aplikasi.
2. File. Fasilitas ini juga dapat menyimpan data sama halnya dengan Shared Preferences, hanya saja
data disimpan ke dalam bentuk file. Misalnya: txt, xml atau bentuk file lainnya
3. SQLite Database. Fasilitas ini cukup idel untuk menyimpan data yang lumayan banyak. Berbeda

halnya dengan no 1 dan 2 di atas yang biasanya untuk menyimpan data yang sedikit seperti
pengaturan. Dengan SQLite proses dapat melakukan query dan table-table seperti halnya database
pada umumnya.
Untuk mempelajari ketiga fasilitas di atas yang lebih detail, silakan bisa di klik pada halaman
http://developer.android.com/training/basics/data-storage/index.html.
Ketiga fasilitas di atas menyimpan data pada ponsel pengguna (client). Nah, bagaimana jika ingin data
itu selalu update dan dapat mengaksesnya siapa saja dan dimana saja (anyone, anytime and
anywhere)?. Itulah alasanya mengapa pada android memerlukan sebuah server dalam hal ini MySQL.
Aplikasi yang akan dibangun pada sesi ini bisa dilihat pada model gambar dibawah ini

Gambar 1
Berdasarkan gambar di atas, ponsel Android akan melakukan request (get/post) ke server melalui
internet. Cara ini juga sama jika ingin aplikasi berada pada localhost. Selanjutnya web server (dalam hal
ini PHP), akan memproses request dari Android dan akan melakukan query ke database (MySQL).

Sehingga ada 3 hal yang harus dilakukan, yaitu
1. Membuat Database
Database: latihan_android
Table: mahasiswa (id, nim, nama, telp, alamat)
create database latihan_android;

use latihan_android;

CREATE TABLE IF NOT EXISTS `mahasiswa` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nim` varchar(11) NOT NULL,
`nama` varchar(100) NOT NULL,
`telp` varchar(50) NOT NULL,
`alamat` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=29 ;

2. Membuat script PHP

Database sudah selesai, selanjutnya adalah membuat script server side. sehingga dibutuhkan script
server side. Sebenarnya Android tidak dapat berkomunikasi langsung dengan MySQL untuk
memanipulasi database. Untuk itu, android membutuhkan script server side misalnya ASP, JSP atau
PHP untuk bisa menjadi “jembatan” antara Android dengan MySQL. Jadi, Android hanya memberika
perintah (request) ke PHP dan PHP lah yang akan melaksanakan query ke MySQL.
Pada sesi ini, dicoba untuk membuat 5 file php :
(1). Index.php

Sebagai file index dan hanya berisi HTML


Index Android


Index Android



(2) connection.php : Koneksi PHP ke MYSQL



(3) select_all.php:
untuk melakukan query select all, mengabil seluruh data dari table Mahasiswa


(4) submit_mahasiswa.php :
untuk memproses simpan dan update




Script PHP sudah selesai dan selanjutnya membuat aplikasi inti yaitu Android. Ada baiknya, sebelum
membuat aplikasi android, kita test dulu apakah script PHP sudah bisa diakses dari emulator.
Caranya buka browser dari emulator (AVD), dan bukalah url http://10.0.2.2/android/index.php
10.0.2.2 adalah host default untuk mengakses server local.
3. Membuat aplikasi Android
Pada project ini, kita membuat aplikasi dengan Min Requirement SDK adalah API 11 (Honeycomb) .
Karena di aplikasi ini memiliki Action Bar (Action Bar hanya tersedia pada API 11 ke atas).
Secara default, di Android Studio akan membuat 1 Activity dan 1 layout (MainActivity.java dan
activity_main.xml).
(1) Membuat Object Mahasiswa (mahasiswa.java)
Membuat object Mahasiswa, karena table yang dibuat sebelumnya adalah mahasiswa. Class
Mahasiswa sangat membantu kita memanipulasi object. Salah satunya adalah konsep Object
Relational Mapping (ORM) yang menggunakan object yang sama untuk memetakan table pada
database.
package
org.pizaini.mahasiswaonline.entities;


public Integer getId() {
return id;
}

public class Mahasiswa {
private Integer id;

public void setId(Integer id) {
this.id = id;
}

private String nim;
private String nama;
private String telp;
private String alamat;
public Mahasiswa() {
super();
}
public Mahasiswa(Integer id, String nim,
String nama, String telp,

String alamat) {
super();
this.id = id;
this.nim = nim;
this.nama = nama;
this.telp = telp;
this.alamat = alamat;
}

public String getNim() {
return nim;
}
public void setNim(String nim) {
this.nim = nim;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;

}
public String getTelp() {
return telp;
}
public void setTelp(String telp) {
this.telp = telp;
}
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat)
{
this.alamat = alamat; }
}

(2) Membuat Class ServerRequest
Class ini akan gunakan berkomunikasi / melakukan request ke server. Pada class ini, akan
membuat dua buah request, yaitu GET dan POST.

package org.pizaini.mahasiswaonline.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

import org.pizaini.mahasiswaonline.entities.Mahasiswa;
import android.util.Log;
public class ServerRequest {
private final static String TAG = "ServerRequest";
private final String serverUri = "http://10.0.2.2/android";
public static final String urlSelectAll = "select_all.php";
public static final String urlDelete = "delete_mahasiswa.php";
public static final String urlSubmit = "submit_mahasiswa.php";
public ServerRequest() {
super();
}
/** Mengirimkan GET request */
public String sendGetRequest(String reqUrl){
HttpClient httpClient;
HttpGet httpGet = new HttpGet(serverUri+"/"+reqUrl);
InputStream is = null;
StringBuilder stringBuilder = new StringBuilder();
try {
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 3000);

HttpConnectionParams.setSoTimeout(params, 3000);
httpClient = new DefaultHttpClient(params);
Log.d(TAG, "executing...");
HttpResponse httpResponse = httpClient.execute(httpGet);
StatusLine status = httpResponse.getStatusLine();

if(status.getStatusCode() == HttpStatus.SC_OK && httpResponse != null){
/** mengambil response string dari server */
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
while((line = reader.readLine()) != null){
stringBuilder.append(line+"\n");
}
is.close();
}
} catch (Exception e) {
Log.d(TAG, e.getMessage());
}
return stringBuilder.toString();
}
/** Mengirimkan POST request */
public int sendPostRequest(Mahasiswa mahasiswa, String url){
int replyCode = 99;
HttpClient httpClient;
HttpPost post = new HttpPost(this.serverUri+"/"+url);
/** menambahkan parameter ke dalam request */
List value = new ArrayList();
value.add(new BasicNameValuePair("id", mahasiswa.getId().toString()));
value.add(new BasicNameValuePair("nim", mahasiswa.getNim()));
value.add(new BasicNameValuePair("nama", mahasiswa.getNama()));
value.add(new BasicNameValuePair("telp", mahasiswa.getTelp()));
value.add(new BasicNameValuePair("alamat", mahasiswa.getAlamat()));
try {
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 3000);
HttpConnectionParams.setSoTimeout(params, 3000);
httpClient = new DefaultHttpClient(params);
post.setEntity(new UrlEncodedFormEntity(value));
Log.d(TAG, "executing post...");
HttpResponse httpResponse = httpClient.execute(post);
StatusLine status = httpResponse.getStatusLine();
if(status.getStatusCode() == HttpStatus.SC_OK){
Log.d(TAG, "submitted sucessfully...");
replyCode = status.getStatusCode();
}
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}
return replyCode;
}
}

MainActivity akan digunakan untuk menampilkan ListView nama mahasiswa dan NIM. Seperti berikut:

Sumber :
https://github.com/pizaini/BelajarAndroid
http://ciqwan.blog.unigha.ac.id/2014/09/03/pengenalan-json-dan-prakteknya-di-android/

Dokumen yang terkait

Analisis komparatif rasio finansial ditinjau dari aturan depkop dengan standar akuntansi Indonesia pada laporan keuanagn tahun 1999 pusat koperasi pegawai

15 355 84

Analisis korelasi antara lama penggunaan pil KB kombinasi dan tingkat keparahan gingivitas pada wanita pengguna PIL KB kombinasi di wilayah kerja Puskesmas Sumbersari Jember

11 241 64

Keanekaragaman Makrofauna Tanah Daerah Pertanian Apel Semi Organik dan Pertanian Apel Non Organik Kecamatan Bumiaji Kota Batu sebagai Bahan Ajar Biologi SMA

26 317 36

Berburu dengan anjing terlatih_1

0 46 1

Analisis tentang saksi sebagai pertimbangan hakim dalam penjatuhan putusan dan tindak pidana pembunuhan berencana (Studi kasus Perkara No. 40/Pid/B/1988/PN.SAMPANG)

8 102 57

DAMPAK INVESTASI ASET TEKNOLOGI INFORMASI TERHADAP INOVASI DENGAN LINGKUNGAN INDUSTRI SEBAGAI VARIABEL PEMODERASI (Studi Empiris pada perusahaan Manufaktur yang Terdaftar di Bursa Efek Indonesia (BEI) Tahun 2006-2012)

12 142 22

Hubungan antara Kondisi Psikologis dengan Hasil Belajar Bahasa Indonesia Kelas IX Kelompok Belajar Paket B Rukun Sentosa Kabupaten Lamongan Tahun Pelajaran 2012-2013

12 269 5

Analisa studi komparatif tentang penerapan traditional costing concept dengan activity based costing : studi kasus pada Rumah Sakit Prikasih

56 889 147

Analisis pengaruh modal inti, dana pihak ketiga (DPK), suku bunga SBI, nilai tukar rupiah (KURS) dan infalnsi terhadap pembiayaan yang disalurkan : studi kasus Bank Muamalat Indonesia

5 112 147

Analisis komposisi asam amino gelatin sapi dan gelatin babi pada marshmallow menggunakan teknik kombinasi HPLC dan PCA

10 132 71