KELOMPOK 5 Pengenalan JSON Parser Pemahaman JSON Parser

  • Slides: 25
Download presentation
KELOMPOK 5 Pengenalan JSON Parser Pemahaman JSON Parser, Metode-metode JSON Parser dan Library JSON

KELOMPOK 5 Pengenalan JSON Parser Pemahaman JSON Parser, Metode-metode JSON Parser dan Library JSON Parser o Harry Wichaksono 16. 11. 0271 o Adent Bima Prasetya 16. 11. 0301 o Wahyu Salam Santoso 16. 11. 0277 o Aziz Wibie Ade Satrio 16. 11. 0304 o Achmad Rizky 16. 11. 0306 o Ikhsan Setiawan 16. 11. 0344 o Alwi Sofwan o Faiz Ichsan Jaya 16. 11. 0283 16. 11. 0289 o Sherlina Tyas Utami o Ikhwan Setyawan 16. 11. 0290 16. 11. 0298 o Sulistiono o Aurora Dwi Khatulistian 16. 11. 0350 17. 11. 0022

POKOK BAHASAN 1 Apa itu JSON? 5 Perbandingan format JSON dan XML 2 Struktur

POKOK BAHASAN 1 Apa itu JSON? 5 Perbandingan format JSON dan XML 2 Struktur JSON 6 Tipe Data JSON 3 JSON dalam Pengembangan Android 7 Library JSON Parser 4 Kelebihan JSON 8 Pembuatan program dan Contoh Program

Apa itu JSON? JSON terbuat dari dua struktur: JSON (Java. Script Object Notation) adalah

Apa itu JSON? JSON terbuat dari dua struktur: JSON (Java. Script Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dibuat rekaman (record), struktur (struct), kamus (dictionary), tabel hash (hash table), daftar berkunci (keyed (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman Java. Script, 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 Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek (object), list), atau associative array. Daftar nilai terurutkan (an ordered list of values). Pada kebanyakan bahasa, hal ini dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan (sequence). keluarga C termasuk C, C++, C#, Java. Script, Perl, Python dll. Oleh karena Struktur-struktur data ini disebut sebagai struktur data universal. Pada dasarnya, semua bahasa sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa pertukaran-data. pemprograman moderen mendukung struktur data ini dalam bentuk yang sama maupun berlainan. Hal ini pantas disebut demikian karena format data mudah dipertukarkan dengan bahasa-bahasa pemprograman yang juga berdasarkan pada struktur data ini.

Struktur JSON Jika dilihat dari strukturnya, JSON dibagi menjadi dua yaitu: 1. JSON dengan

Struktur JSON Jika dilihat dari strukturnya, JSON dibagi menjadi dua yaitu: 1. JSON dengan struktur objek 2. JSON dengan struktur array Bentuk sederetan value saja (meskipun value tersebut juga dapat berbentuk object), yang dalam bahasa pemrograman Javascript dan PHP disebut array, contoh: Bentuk pasangan key: value yang pada bahasa pemrograman Javascript disebut objek, atau dalam bahasa pemrograman lain seperti PHP disebut associative array. Contoh: [“Sponge. Bob Uzumaki", “uspobler. com“] Perhatikan bahwa pada bentuk diatas, karakter pembuka dan penutup yang {“Faiz Ichsan Jaya", “fukuo. com“} Selanjutnya, dalam JSON bentuk diatas disebut objek (Object). Perhatikan bahwa pada bentuk diatas, karakter pembuka dan penutup adalah kurung kurawal. digunakan adalah kurung siku.

Lalu, untuk apa JSON ini dalam pengembangan aplikasi Android? Dalam aplikasi Android, terkadang kita

Lalu, untuk apa JSON ini dalam pengembangan aplikasi Android? Dalam aplikasi Android, terkadang kita memerlukan suatu data yang berasal dari suatu server Walaupun XML sudah sejak lama dipakai dalam format transfer data, namun beberapa untuk digunakan ditampilkan dalam aplikasi kita. Untuk mengambil data dari server kita tahun terakhir, JSON menggeser posisi XML. Kelebihan JSON dari XML adalah sbb: bisa memakai yang namanya API (Application Programming Interface). Bagi yang belum tahu apa itu API; API (Application Programming Interface) 1. hemat resource, terutama bandwidth 2. oleh programmer saat membangun perangkat lunak untuk sistem operasi tertentu. API memungkinkan programmer untuk menggunakan fungsi standar untuk berinteraksi dengan sistem operasi lain. JSON adalah format data bawaan di Javascript, artinya jike data dari server di kirim ke client , dan client menggunakan javascript, maka tidak perlu library tambahan adalah sekumpulan perintah, fungsi, dan protokol yang dapat digunakan Ukuran lebih kecil dibanding XML, efeknya transfer data lebih cepat dan lebih untuk memprosesnya 3. Dibanding XML, format JSON lebih sederhana. 4. library JSON ada di setiap bahasa pemrograman sehingga memudahkan programer yang berbeda bahasa pemrograman

Perbandingan format JSON dan XML {"list_event": [ {"event. ID": "1", "judul": “Aku adalah aku",

Perbandingan format JSON dan XML {"list_event": [ {"event. ID": "1", "judul": “Aku adalah aku", "tanggal": "2014 -05 -19", "jam": "20: 00", "lokasi": “AMIKOM" }, { "event. ID": "2", "judul": “Kamu adalah kamu", "tanggal": "2014 -05 -21", "jam": "09: 00", "lokasi": “MOKIMA" } ] } <list_event> <event. ID>1</event. ID> <judul>Aku adalah aku</judul> <tanggal>2014 -05 -19</tanggal> <jam>20: 00</jam> <lokasi>AMIKOM</lokasi> </event> <event. ID>2</event. ID> <judul>Kamu adalah kamu</judul> <tanggal>2014 -05 -21</tanggal> <jam>09: 00</jam> <lokasi>MOKIMA</lokasi> </event> </list_event> list_event adalah Array JSON. Array terdiri dari beberapa object. Dalam kasus ini, kita punya 2 Tampak perbedaan yang paling mendasar adalah ukuran JSON lebih kecil, perhatikan jumlah text object event. Masing masing object event ini mempunyai 5 field. dan tag penutup di XML yang membuat ukuran XML menjadi besar. Dari dua format diatas juga terlihat format XML lebih kompleks.

Metode-metode pada JSON get(nama String): metode ini hanya mengembalikan nilai tetapi dalam bentuk jenis

Metode-metode pada JSON get(nama String): metode ini hanya mengembalikan nilai tetapi dalam bentuk jenis objek get. Boolean(nama String): metode ini mengembalikan nilai boolean yang ditentukan oleh kunci Untuk menghandle pemanggilan http (untuk mendapatkan JSON-nya) di Background Thread. Ada 3 method penting dalam Async Class, yaitu : • get. Double(nama String): metode ini mengembalikan nilai ganda yang ditentukan oleh kunci Disinilah kita bisa inisialisasi Progress Dialog, karena method ini berjalan di Main get. Int(nama String): metode ini mengembalikan nilai integer yang ditentukan oleh kunci get. Long(String name): metode ini mengembalikan nilai panjang yang ditentukan oleh kunci Method on. Pre. Execute() : Dipanggil sebelum eksekusi (sebelum pemanggilan HTTP). Thread. • length() metode ini mengembalikan jumlah pemetaan nama/nilai dalam objek ini Method do. In. Background() : Dipanggil saat pemanggilan HTTP, disinilah kita melakukan proses untuk mendapatkan data dari JSON dan memparsing nya. Dalam kasus ini kita names() metode ini mengembalikan larik yang berisi string dalam objek ini pakai method yang sudah kita buat, yaitu make. Service. Call(). • Method on. Post. Execute() : Diapnggil setelah eksekusi (setelah pemanggilan HTTP). Disini kita hilangkan Progress Dialog dan menampilkan data ke dalam List. View kita dengan menggunakan Adapter.

Perbedaan JSON dengan XML No JSON XML 1. 2. Mendukung Array Mendukung pembuatan Object

Perbedaan JSON dengan XML No JSON XML 1. 2. Mendukung Array Mendukung pembuatan Object Tidak mendukung Array Tag dibuat manual oleh Programmer 3. 4. Sintak Pendek Dapat berpadu dengan AJAX Ukuran data besar Harus menggunakan XML DOM jika ingin memetakan teks/data 5. Akses data cepat Dapat berpadu dengan AJAX

Tipe Data JSON Maksud tipe data disini adalah jenis data yang dapat digunakan di

Tipe Data JSON Maksud tipe data disini adalah jenis data yang dapat digunakan di dalam JSON, adapun tipe data yang dapat digunakan adalah sebagai berikut: 1 Objek merupakan kumpulan pasangan key dan value yang diapit dengan kurung buka dan kurung tutup (seperti penjelasan sebelumnya). Karena objek ini mencerminkan associative array, maka direkomendasikan agar tidak menggunakan key dengan nilai sama (key sebaiknya unik). Objek ini boleh bernilai kosong dan cukup ditulis {}

2 Array. Sederetan value yang diapit oleh kurung siku (seperti 3 Number berupa digit

2 Array. Sederetan value yang diapit oleh kurung siku (seperti 3 Number berupa digit 0 -9 dan ditulis apa adanya tanpa perlu menggunakan tanda kutip. Number dapat berupa bilangan bulat maupun desimal. Untuk ilustrasi dibawah). Antara value yang satu dengan yang desimal, karakter yang digunakan adalah titik bukan koma. Misal untuk lain dipisahkan tanda koma. array boleh bernilai kosong menuliskan dua koma lima, bentuk angkanya adalah 2. 5 bukan 2, 5 dan cukup ditulis [ ] { } "nama. Depan": "Budi", "nama. Belakang": "Suparman", “nilai”: 8. 5 “nim": 11111 }

4 Booelan berupa teks true dan false tanpa tanda kutip. 6 String berupa semua

4 Booelan berupa teks true dan false tanpa tanda kutip. 6 String berupa semua karakter Unicode yang artinya semua karakter yang ada di dunia ini. String ini merupakan tipe data yang paling sering { } 5 "first_name" : "Sammy", "last_name" : "Shark", "online" : true digunakan, dalam penulisannya, string harus diapit dengan dua tanda kutip (”) tidak boleh menggunakan satu tanda kutip ( ‘ ) atau tidak menggunakan tanda kutip sama sekali. Null berupa teks null dan ditulis langsung tanpa tanda kutip. { } “judul" : “Belajar Android gimana? ", “deskripsi” : null { “judul“: “Belajar Android gimana? ", “deskripsi”: ”Coba inisiatif belajar di internet, sekarang banyak banget resources yang bisa dipelajari. Mau bisa itu berawal dari niat. ” }

Library JSON Parser Ada beberapa library yang bisa dipakai agar memudahkan kita membuat aplikasi,

Library JSON Parser Ada beberapa library yang bisa dipakai agar memudahkan kita membuat aplikasi, antara lain: 1 Volley merupakan produk yang diperkenalkan oleh Google untuk mempermudah pertukaran data tanpa harus membuat deretan kode yang sangat panjang. Secara default volley menggunakan metode sinkronisasi jadi Anda tidak perlu membuat sebuah method atau fungsi yang menggunakan class asynctask. Melakukan sebuah request queuing and prioritization (Mengutamakan prioritas dalam sebuah antrian). Secara singkat Volley merupakan library yang digunakan untuk memanggil API web dengan sangat mudah jadi kita tidak perlu membuat HTTP Connection sendiri, namun tinggal menggunakan method yang ada di dalam library tersebut. Kelebihan library ini meliputi : • Automatic scheduling of network requests. • Beberapa koneksi jaringan bersamaan. • Manajemen caching • Support prioritas Request. • Cancel Request API. • Mudah dicustom. • Debugging dan tracing tools. Berikut adalah Class penting dalam library ini : 1. Request. Queue: Antrian yang berisi Request Network / HTTP yang perlu dibuat. 2. Request: Class dasar yang berisi informasi terkait jaringan seperti Metode HTTP. 3. String. Request: HTTP Request dengan respon String. 4. Json. Object. Request: Permintaan HTTP dengan respon JSONObject.

2 Retrofit merupakan library android yang dibuat oleh Square yang digunakan sebagai REST Perpustakaan

2 Retrofit merupakan library android yang dibuat oleh Square yang digunakan sebagai REST Perpustakaan yang kuat ini mempermudah penggunaan data JSON atau XML, yang kemudian Client pada Android, yang pasti akan memudahkan kita dalam programing. Karena kita diurai menjadi Plain Old Java Objects (POJOs). Permintaan GET, POST, PUT, PATCH, tidak perlu lagi untuk membuat method-method sendiri untuk menggunakan REST Client dan DELETE semua bisa dieksekusi. API dari backend. Library ini menyediakan framework yang powerfull untuk authenticating Retrofit mendukung perpustakaan konverter JSON untuk menangani hal itu: dan berinteraksi dengan API dengan mengirimkan request menggunakan Ok. HTTP. Retrofit 1. Gson: com. squareup. retrofit: converter-gson memparsing JSON response dari Web API menjadi Plain Old Java Object (POJO) sehingga 2. Jackson: com. squareup. retrofit: converter-jackson akan memudahkan menggunakan value-value yang berada dalam respone karena sudah 3. Moshi: com. squareup. retrofit: converter-moshi otomatis terkonversi menjadi object. Jika sebelum adanya Retrofit kita harus lakukan 4. Untuk Protocol buffers, Retrofit mendukung: menggunakan Async. Task untuk melakaukan request dari web dalam background thread 5. Protobuf: com. squareup. retrofit 2: converter-protobuf kemudian kita membuat JSONParser sendiri, dengan Retrofit semuanya kita tidak perlu 6. Wire: com. squareup. retrofit 2: converter-wire melakukan hal itu semua. 7. dan untuk XML Retrofit, mendukung: 8. Simple Framework: com. squareup. retrofit 2: converter-simpleframework

3 Fast. JSON adalah library Java yang dapat digunakan untuk mengkonversi objek Java (POJO)

3 Fast. JSON adalah library Java yang dapat digunakan untuk mengkonversi objek Java (POJO) ke dalam bentuk JSON. Ini juga dapat dipakai untuk mengkonversi dari JSON bentuk String ke bentuk objek Java yang sesuai. ” Tujuan pembuatan Fast. JSON ini juga dijabarkan di dalam halaman Github mereka yaitu: • Memberikan performa terbaik disisi server ataupun sisi Android client. . • Memberikan konversi sederhana fungsi to. JSONString()dan parse. Object() untuk konversi objek Java ke bentuk JSON dan sebaliknya. • Memperbolehkan objek Java yang tidak dapat dimodifikasi sebelumnya , dikonversi menjadi bentuk JSON atau sebaliknya. - Dukungan ekstensif untuk tipe Java Generics. • Mendukung kustomisasi representasi dari isi objek Java. • Mendukung objek Java yang kompleks (dengan susunan inheritance yang dalam dan penggunaan ekstensif dari tipe data generic). 4 Gson adalah pustaka Java yang dapat digunakan untuk mengonversi Objek Java ke dalam representasi JSON mereka. Ini juga dapat digunakan untuk mengkonversi string JSON ke objek Java yang setara. Gson dapat bekerja dengan objek Java sembarang termasuk objek yang sudah ada sebelumnya yang tidak memiliki kode sumber. Tujuan dari library ini: • Memberikan metode sederhana to. Json() dan from. Json() untuk mengonversi objek Java ke JSON dan sebaliknya • Izinkan objek yang belum dimodifikasi yang sudah ada untuk dikonversi ke dan dari JSON • Dukungan luas Java Generics • Izinkan representasi khusus untuk objek • Mendukung objek acak yang sewenang-wenang (dengan hierarki warisan yang mendalam dan penggunaan luas dari tipe generik)

1 Cara mengimplementasikan Volley dalam pembuatan aplikasi JSON Parser dan menggunakan API dari newsapi.

1 Cara mengimplementasikan Volley dalam pembuatan aplikasi JSON Parser dan menggunakan API dari newsapi. org Pertama, kita membuat projek Android Studio seperti biasa (kita ambil asumsi bahwa kalian sudah bisa buat projek sendiri dengan memilih minimum SDK dsb) Lalu, buat dua layout XML yang terdiri dari Recycler. View yang didalemnya terdapat Image. View dan Text. View yang nantinya akan ditampilkan pada aplikasi tersebut.

Untuk menggunakan Card. View, Recycler. View, Picasso dan Volley, kita terlebih dahulu mengimplementasikan library-nya

Untuk menggunakan Card. View, Recycler. View, Picasso dan Volley, kita terlebih dahulu mengimplementasikan library-nya di gradle. app seperti berikut; 2 dependencies { implementation file. Tree(dir: 'libs', include: ['*. jar']) implementation 'com. android. support: appcompat-v 7: 28. 0. 0' implementation 'com. android. support. constraint: constraint-layout: 1. 1. 3' implementation 'com. android. support: cardview-v 7: 28. 0. 0' implementation 'com. android. support: recyclerview-v 7: 28. 0. 0' implementation 'com. android. volley: 1. 1. 1' test. Implementation 'junit: 4. 12' implementation 'com. squareup. picasso: 2. 71828' android. Test. Implementation 'com. android. support. test: runner: 1. 0. 2' android. Test. Implementation 'com. android. support. test. espresso: espresso-core: 3. 0. 2' }

3 Masukkan kode ini di Android. Manifest. xml untuk memberikan izin bahwa aplikasi tersebut

3 Masukkan kode ini di Android. Manifest. xml untuk memberikan izin bahwa aplikasi tersebut harus menggunakan internet <uses-permission android: name="android. permission. INTERNET"/>

Buat class Java dengan nama “List. Item” seperti berikut: 4 public class List. Item

Buat class Java dengan nama “List. Item” seperti berikut: 4 public class List. Item { private String m. Image. Url; private String m. Title; private String m. Description; public List. Item(String m. Image. Url, String m. Title, String m. Description) { this. m. Image. Url = m. Image. Url; this. m. Title = m. Title; this. m. Description = m. Description; } public String getm. Image. Url() { return m. Image. Url; } public String getm. Title() { return m. Title; } } public String getm. Description() { return m. Description; }

Dan buat class Java Adapternya dengan nama “List. Adapter” seperti berikut: 5 public class

Dan buat class Java Adapternya dengan nama “List. Adapter” seperti berikut: 5 public class List. Adapter extends Recycler. View. Adapter<List. Adapter. List. View. Holder> { private Context m. Context; private Array. List<List. Item> m. List. Item; public List. Adapter(Context context, Array. List<List. Item> list. Item) { m. Context = context; m. List. Item = list. Item; } @Override public List. View. Holder on. Create. View. Holder(View. Group parent, int view. Type) { View v = Layout. Inflater. from(m. Context). inflate(R. layout. list_item, parent, false); return new List. View. Holder(v); } @Override public void on. Bind. View. Holder(List. View. Holder holder, int position) { List. Item current. Item = m. List. Item. get(position); String image. Url = current. Item. getm. Image. Url(); String title. News = current. Item. getm. Title(); String desc. News = current. Item. getm. Description(); } holder. m. Title. set. Text(title. News); holder. m. Description. set. Text(desc. News); Picasso. get(). load(image. Url). fit(). center. Inside(). into(holder. m. Image. Url);

…lanjutannya @Override public int get. Item. Count() { return m. List. Item. size(); }

…lanjutannya @Override public int get. Item. Count() { return m. List. Item. size(); } public class List. View. Holder extends Recycler. View. Holder { public Image. View m. Image. Url; public Text. View m. Title; public Text. View m. Description; public List. View. Holder(@Non. Null View item. View) { super(item. View); m. Image. Url = item. View. find. View. By. Id(R. id. image. View); m. Title = item. View. find. View. By. Id(R. id. text. View. Title); m. Description = item. View. find. View. By. Id(R. id. text. View. Description); } } }

6 Pada Main. Activity. class, berikut beberapa kode yang akan kami jelaskan protected void

6 Pada Main. Activity. class, berikut beberapa kode yang akan kami jelaskan protected void on. Create(Bundle saved. Instance. State) {. . . m. Request. Queue = Volley. new. Request. Queue(this); parse. JSON(); } adalah method dari Volley untuk memanggil fungsi Request. Queue() adalah fungsi method yang berisi kodingan url API, Json. Object. Request, Request. Queue menjadi satu bagian yang akan dipanggil di dalam kode protected void on. Create(Bundle saved. Instance. State)

private void parse. JSON() { String url = "https: //newsapi. org/v 2/top-headlines? sources=bbc-news&api. Key=4

private void parse. JSON() { String url = "https: //newsapi. org/v 2/top-headlines? sources=bbc-news&api. Key=4 a 945 d 01 bb 114553 b 70 f 33 f 071096857 "; Json. Object. Request request = new Json. Object. Request(Request. Method. GET, url, null, new Response. Listener<JSONObject>() { @Override public void on. Response(JSONObject response) { try { JSONArray json. Array = response. get. JSONArray( "articles"); for(int i = 0; i < json. Array. length(); i++) { JSONObject hit = json. Array. get. JSONObject(i); String title. News = hit. get. String( "title"); String image. Url = hit. get. String( "url. To. Image"); String desc. News = hit. get. String( "content"); adalah API berupa URL untuk menampilkan berita terbaru dari newsapi. org. Sebelum menggunakan API ini, kita terlebih dahulu request API Key. Jika sudah mendapat API Key, kita bisa menggunakan API tersebut. Key tersebut yang sudah kami tandai berwarna merah JSONArray adalah method dari Volley untuk mengambil data JSON yang akan ditampilkan pada aplikasi kita nanti. Untuk kasus ini, kami mengambil “articles” karena struktur array tersebut seperti ini: m. List. add(new List. Item(image. Url, title. News, desc. News)); } m. List. Adapter = new List. Adapter(Main. Activity. this, m. List); m. Recycler. View. set. Adapter(m. List. Adapter); } catch (JSONException e) { e. print. Stack. Trace(); } }); } }, new Response. Error. Listener() { @Override public void on. Error. Response(Volley. Error error) { error. print. Stack. Trace(); } m. Request. Queue. add(request); } articles": [ -{ -"source": { "id": "bbc-news", "name": "BBC News" }, "author": "BBC News", "title": "'Synagogue shooter' charged with murder", "description": "The Pittsburgh attack killed 11 and is said to be the worst anti-Semitic attack in recent US history. ", "url": "http: //www. bbc. co. uk/news/world-us-canada-46007707", "url. To. Image": "https: //ichef. bbci. co. uk/images/ic/1024 x 576/p 06 q 2 l 1 h. jpg", "content": "A man suspected of killing 11 people in a synagogue in Pittsburgh has…” },

String title. News = hit. get. String("title"); String image. Url = hit. get. String("url.

String title. News = hit. get. String("title"); String image. Url = hit. get. String("url. To. Image"); String desc. News = hit. get. String("content"); m. List. add(new List. Item(image. Url, title. News, desc. News)); articles": [ -{ -"source": { "id": "bbc-news", "name": "BBC News" }, "author": "BBC News", "title": "'Synagogue shooter' charged with murder", "description": "The Pittsburgh attack killed 11 and is said to be the worst anti-Semitic attack in recent US history. ", "url": "http: //www. bbc. co. uk/news/world-us-canada-46007707", "url. To. Image": "https: //ichef. bbci. co. uk/images/ic/1024 x 576/p 06 q 2 l 1 h. jpg", "content": "A man suspected of killing 11 people in a synagogue in Pittsburgh has…” }, Disini kami mengambil tiga key value yaitu title, description dan url. To. Image yang akan ditampilkan pada Activity. Berikut tampilan aplikasinya

Terima kasih

Terima kasih

Daftar Pustaka https: //www. codepolitan. com/mengenal-fastjson-parser-untuk-java-dan-android 57 cf 8473292 da-346 https: //www. json. org/json-id.

Daftar Pustaka https: //www. codepolitan. com/mengenal-fastjson-parser-untuk-java-dan-android 57 cf 8473292 da-346 https: //www. json. org/json-id. html http: //jagowebdev. com/memahami-json/ https: //www. candra. web. id/penjelasan-struktur-data-json/ http: //samsullutfi. blogspot. com/2017/04/perbedaan-antara-json-dan-xml. html https: //newsapi. org/docs/get-started https: //www. sinaryuda. web. id/tutorial/contoh-penggunaan-android-volley-library. html