STMIK TASIKMALAYA
SEKOLAH TINGGI MANAJEMEN INFORMATIKA
DAN KOMPUTER
A. TUJUAN
- Mahasiswa mamahami Request Network.
- Mahasiswa mampu mengunakan library Networking
- Mahasiswa mampu menggunakan database Mysql untuk membuat API.
- Mahasiswa memahami pembuatan Fasilitas Login
B. TEORI SINGKAT
1. FAN (Fast Android Networking)
FAN merupakan sebuah library yang sangan powerful untuk melakukan semua
tipe request network di android yang dibuat diatas lapisan jaringan OkHttp.
Selain powerfull dan mudah digunakan, perbedaan mendasar dari FAN ini dengan
library lainnya adalah dari segi fitur, berikut fitur-fitur yang ditawarkan oleh FAN
1. Berbeda dengan library lain, FAN mendukung semua jenis request
HTTP/HTTPS seperti GET, POST, DELETE, HEAD, PUT, PATCH.
2. Koneksi lebih cepat karena menggunakan OkHttp dan Okio
3. Support untuk download, upload, dan multipart
4. Support Parsing JSON ke Java Object dan mendukung Jackson Parser
5. Manajemen Caching yang dapat mengurangi penggunaan bandwith
6. Kode simple dan mudah digunakan
7. Support RxJava
AndroidNetworking.initialize(getApplicationContext());
Jika semua persyaratan diatas sudah terpenuhi, berikut contoh beberapa request
yang bisa digunakan dengan Fast Android Networking ini :
AndroidNetworking.get("https://fierce-cove
29863.herokuapp.com/getAllUsers/{pageNumber}")
.addPathParameter("pageNumber", "0")
.addQueryParameter("limit", "3")
.addHeaders("token", "1234")
.setTag("test")
.setPriority(Priority.LOW)
.build()
.getAsJSONArray(new JSONArrayRequestListener() {
@Override
public void onResponse(JSONArray response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
AndroidNetworking.post("https://fierce-cove-29863.herokuapp.com/createAnUser")
.addBodyParameter("firstname", "Amit")
.addBodyParameter("lastname", "Shekhar")
.setTag("test")
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
Kalian juga dapat memposting objek java, json, file, dll dalam permintaan POST
seperti ini.
User user = new User();
user.firstname = "Amit";
user.lastname = "Shekhar";
AndroidNetworking.post("https://fierce-cove-
29863.herokuapp.com/createUser")
.addBodyParameter(user) // posting java object
.setTag("test")
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONArray(new JSONArrayRequestListener() {
@Override
public void onResponse(JSONArray response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
AndroidNetworking.post("https://fierce-cove-
29863.herokuapp.com/createUser")
.addJSONObjectBody(jsonObject) // posting json
.setTag("test")
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONArray(new JSONArrayRequestListener() {
@Override
public void onResponse(JSONArray response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
AndroidNetworking.post("https://fierce-cove-
29863.herokuapp.com/postFile")
.addFileBody(file) // posting any type of file
.setTag("test")
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
Download File dari Server
AndroidNetworking.download(url,dirPath,fileName)
.setTag("downloadTest")
.setPriority(Priority.MEDIUM)
.build()
.setDownloadProgressListener(new DownloadProgressListener() {
@Override
public void onProgress(long bytesDownloaded, long totalBytes) {
// do anything with progress
}
})
.startDownload(new DownloadListener() {
@Override
public void onDownloadComplete() {
// do anything after completion
}
@Override
public void onError(ANError error) {
// handle error
}
});
AndroidNetworking.upload(url)
.addMultipartFile("image",file)
.addMultipartParameter("key","value")
.setTag("uploadTest")
.setPriority(Priority.HIGH)
.build()
.setUploadProgressListener(new UploadProgressListener() {
@Override
public void onProgress(long bytesUploaded, long totalBytes) {
// do anything with progress
}
})
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// do anything with response
}
@Override
public void onError(ANError error) {
// handle error
}
});
Dan masih banyak lagi yang lainnya untuk dokumentasi lengkapnya silahkan bisa
anda kunjungi website : https://amitshekhar.me/
C. PRAKTIKUM MEMBUAT FORM LOGIN
Kode SQL :
<?php
$host="localhost";
$user="root";
$pass="";
$database="dbpos";
$koneksi= new mysqli($host,$user,$pass,$database);
if(mysqli_connect_errno()){
trigger_error("Koneksi ke database gagal : ".
mysqli_connect_error(), E_USER_ERROR);
}
?>
<?php
include "koneksi.php";
//inisialisasi data
$username=mysqli_real_escape_string($koneksi,$_POST['username']);
$password=mysqli_real_escape_string($koneksi,md5($_POST['password']));
$result = array();
$tampil=mysqli_query($koneksi,"SELECT * FROM t_pengguna WHERE
username='$username' AND password='$password' ");
$data=mysqli_fetch_array($tampil);
if(!empty($data['id_pengguna'])){
array_push($result, array(
'id_pengguna'=>"$data[id_pengguna]",
'nama_pengguna'=>"$data[nama_pengguna]",
'username'=>"$data[username]",
'password'=>"$data[password]",
'level'=>"$data[level]",
'status'=>1,
'pesan'=>"Berhasil Login"));
} else{
array_push($result, array(
'id_pengguna'=>null,
'nama_pengguna'=>null,
'username'=>null,
'password'=>null,
'level'=>null,
'status'=>0,
'pesan'=>"Gagal Login"));
die(json_encode($result));
mysqli_close($koneksi);
?>
implementation 'com.amitshekhar.android:android-networking:1.0.
8. Atur izin menggunakan jaringan pada file AndroidManifest.xml
Untuk penggunaan izin network pada tingkatan android versi yang teratas anda
harus menggunakan jenis protocol HTTPS
Kode Lengkap :
<ImageView
android:id="@+id/Logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Form Login"
android:textSize="30sp"
android:textStyle="bold"
android:layout_below="@id/Logo"
android:layout_marginTop="24dp" />
</RelativeLayout>
<EditText
android:id="@+id/text_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:ems="10"
android:hint="Username"
android:padding="10dp"
android:textColorHint="#757575"
android:background="#E0E0E0"
android:inputType="textPersonName" />
<EditText
android:id="@+id/text_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword"
android:hint="Password"
android:textColorHint="#757575"
android:padding="10dp"
android:background="#E0E0E0"
android:layout_marginTop="10dp" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
android:text="Log In"
android:textColor="#FFF"
android:background="#FF5252" />
</LinearLayout>
11. Login.java
Kode Lengkap :
package com.cepi.ptk11;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONArrayRequestListener;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
btn_login = (Button) findViewById(R.id.btn_login);
txt_password = (EditText) findViewById(R.id.text_password);
txt_username = (EditText) findViewById(R.id.text_username);
AndroidNetworking.initialize(getApplicationContext());
// Pada saat tombol login di klik
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String password = txt_password.getText().toString();
String username = txt_username.getText().toString();
//Buat fungsi login dengan 2 parameter inputan yaitu username dan password
public void loginku(String username,String password){
pDialog = new ProgressDialog(this);
pDialog.setCancelable(false);
pDialog.setMessage("Verifikasi ...");
showDialog();
//Alamat untuk request API server sesuaikan IP atau domain dengan yang
anda buat disini saya menggunkan localhost
AndroidNetworking.post("http://192.168.137.1:8080/api/login.php")
//mengirimkan data username dan password yang akan diisi oleh
user
.addBodyParameter("username",username)
.addBodyParameter("password",password)
.setPriority(Priority.MEDIUM)
.build()
.getAsJSONArray(new JSONArrayRequestListener() {
@Override
public void onResponse(JSONArray response) {
//Handle Response
hideDialog();
try {
}
// Jika status = 1 maka berhasil login
if(status==1){
Toast.makeText(getApplicationContext(), pesan,
Toast.LENGTH_SHORT).show();
editor.commit();
}else {
//Apabila gagal login tampilkan pesan peringatan
dan kosongkan kolom input
Toast.makeText(getApplicationContext(), pesan,
Toast.LENGTH_SHORT).show();
txt_password.setText("");
txt_username.setText("");
hideDialog();
}
}catch (JSONException e) {
// JSON error
e.printStackTrace();
}
}
@Override
public void onError(ANError error) {
android:gravity="center">
<ImageView
android:id="@+id/Logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/user" />
</RelativeLayout>
<TextView
android:id="@+id/text_welcome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:text="Selamat Datang"
android:textSize="15sp"
android:textStyle="bold"
android:layout_marginTop="24dp" />
<TextView
android:id="@+id/text_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:text="Name User Login"
android:textSize="25sp"
android:textStyle="bold"
android:layout_marginTop="4dp" />
<Button
android:id="@+id/btn_logout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="23dp"
android:text="Log Out"
android:textColor="#FFFFFF"
android:background="#D500F9" />
</LinearLayout>
13. MainActivity.java
Kode Langkap :
package com.cepi.ptk11;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
btn_logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putBoolean(session_status, false);
editor.commit();
Toast.makeText(getApplicationContext(), "Anda telah keluar",
Toast.LENGTH_SHORT).show();
14. Agar tampilan Activity Login FullScreen kita buat pengaturan pada style.xml
Tambahkan :
Kode Lengkap :
Apabila sudah dibuat sesuaikan pada AndroidManifest.xml tambahkan thema
pada activity login
android:theme="@style/FullScreen"