Menghubungkan java android menggunakan library volley ke database melewati PHP. Database dan PHP menggunakan tools XAMPP untuk memudahkan. Tujuan dari Pembahasan kali ini adalah keberhasilan dalam mengambil data sehingga menjadi informasi yang diperlukan.
Table of Contents
Pemrograman bahasa java merupakan salah satu bahasa yang digunakan untuk membuat aplikasi Android. Aplikasi Android biasanya membutuhkan data-data yang diproses menjadi sebuah informasi. Penyimpanan data dilakukan pada memory (RAM) saat aplikasi berjalan, file, ataupun database tergantung kebutuhan dalam bisnis. Singkat cerita, pada kesempatan kali ini saya membuat prototipe menghubungkan aplikasi android ke server (mohon maklum karena saya belum paham ke ranah dev-ops jika terdapat salah konsep) yang berisi API menggunakan PHP dan MySQL sebagai RDBMS-nya dengan tools XAMPP (untuk PHP dan MySQL) dan library Volley (untuk aplikasi Android).
1. Buat Database (Lewati langkah ini jikalau anda sudah paham database mana yang ditargetkan, atau import file sql pada folder sql di database toko-berada)
- Jalankan Apache Server dan MySQL Server di XAMPP
- Buka phpmyadmin
- Buat Database dan tabel (dalam hal ini nama databasenya toko-berada dan nama tabelnya login yang berisi atribute username dan password )
- Isi tabel
2. Buat API (istilah saya pinjam, karena kemungkinan konsep-nya salah namun untuk menyederhanakan maksud.)
- Buat file PHP sebagai API (supaya terlihat rapih, buat folder api pada htdocs dan toko-berada.php untuk nama filenya)
- isikan file tersebut seperti berikut (atau cek di folder xampp pada repo ini)
<?php
/*
syntax:
new mysqli(url, user, pass, db);
args:
@url -> String, alamat url
@user -> String, username database yang dituju (default username database di XAMPP adalah "root")
@pass -> String, password database yang dituju (default password database di XAMPP adalah kosong)
@db -> String, nama database yang dituju
*/
$mysqli = new mysqli("localhost", "root", "", "toko-berada");
/*
syntax:
$_POST[name_attribute]
args:
$_POST -> kita akan menggunakan method request POST
@name_attribute -> String, dalam hal ini kita sepakati dulu yaitu "code"
*/
switch ($_POST["code"]) {
// value dari $_POST["code"] yaitu "login"
case "login":
/*
pengambilan data sekaligus pengecekan variabel $row itu tidak kosong
dan berlakukan variabel array $response dengan nama atribut "success" benilai 1
($response['success'] = 1) dan 0 untuk data kosong (tidak ada).
*/
if (!empty($row = $mysqli->query("SELECT * FROM login WHERE username ='" . $_POST["username"] . "' AND password='" . $_POST["password"] . "'")->fetch_array(MYSQLI_ASSOC))) {
$response['success'] = 1;
// kirim response berisi variabel $response yang ditransformasi jadi notasi bentuk json
die(json_encode($response));
} else {
$response['success'] = 0;
// kirim response berisi variabel $response yang ditransformasi jadi notasi bentuk json
die(json_encode($response));
}
break;
default:
break;
}
/*
menutup koneksi ke server MySQL
*/
$mysqli->close();
?>
3. Import Library Volley (implementation 'com.android.volley:volley:1.2.1') pada build.gradle (Module:app)
- tambahkan beberapa pengaturan pada AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
...
<!-- untuk mengijinkan aplikasi mengakses internet -->
<uses-permission android:name="android.permission.INTERNET" />
...
<!--
android 9 (sdk level 28)
android:usesCleartextTraffic="true"
-->
<application
...
android:usesCleartextTraffic="true"
...>
</application>
</manifest>
- Cek ipserver (dalam hal ini komputer kita jadi server (terbukti Apache dan MySQL running)) dan masukan kedalam String URL (lihat juga Algoritma No.2 Point 1, terlihat direktorinya)
- Fungsi Parameter Request (Keterkaitan LoginActivity.java dengan toko-berada.php)
- Fungsi Parameter Response
Pada pada akhirnya point utama berada pada sintax
// this adalah konteksnya
Volley.newRequestQueue(this)
// menambahkan request dengan object string request
.add(new StringRequest(
// method requestnya post
Request.Method.POST,
// alamat URL endpoint
URL,
// response dari server
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
String text = "-";
try {
if (new JSONObject(response).getInt("success") == 1) {
text = "Login Berhasil";
} else {
text = "Login Gagal";
}
} catch (JSONException e) {
// text = e.getMessage();
Log.e(getClass().getSimpleName(), "onResponse: ", e);
}
statusLogin.setText(text);
}
},
// jikalau terdapat error response dari server (misal code 500)
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// statusLogin.setText(error.getMessage());
Log.e(getClass().getSimpleName(), "onErrorResponse: ", error);
}
}) {
// parameter yang dibawa request POST dalam hal ini code = "login", username = "admin", password = "admin"
@Override
protected Map<String, String> getParams() {
return params;
}
});