/Java-Android-Prototipe-Menghubungkan-API

Menghubungkan java android menggunakan library volley ke API (database melewati PHP)

Primary LanguagePHP



Logo

Java-Android-Prototipe-Menghubungkan-API

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

Pendahuluan

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).

(back to top)

Pembahasan

Teknologi

Algortitma

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

XAMPP 1

  • Buka phpmyadmin
  • Buat Database dan tabel (dalam hal ini nama databasenya toko-berada dan nama tabelnya login yang berisi atribute username dan password )

Buat Database Buat Tabel Buat Atribute

  • Isi tabel

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)

Buat File API

  • 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)

Import Library Volley

4. Setup

  • 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)

Cek IP

  • Fungsi Parameter Request (Keterkaitan LoginActivity.java dengan toko-berada.php)

Fungsi Parameter Fungsi Parameter 2

  • Fungsi Parameter Response

Fungsi Parameter Response

(back to top)

Simpulan

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;
                    }
                });

(back to top)