Library Fast Android Networking (FAN) dan Cara Menggunakan

Posted on

Fast Android Networking – Sudah pernah mendengar tentang FAN atau Android Fast Networking ? Ya, Android Fast Netwoking merupakan salah satu Library yang bisa digunakan untuk keperluar request ke network/internet

Selain Fast Android Networking, ada banyak libarary sejenis yang sering digunakan, antara lain RetrofitVolleyLoopj, dan OkHttp

Semuanya sama, dapat dimanfaatkan untuk terhubung ke jaringan/internet juga bisa untuk request rest API, berikut akan saya jelaskan secara detail mengenai Library ini

Apa itu FAN (Fast Android Networking) ?

Fast Android Networking merupakan sebuah library yang powerfull untuk melakukan request ke jaringan dalam aplikasi Android yang dibuat diatas OkHttp Newtworking Layer

Fitur yang dimiliki FAN (Android Fast Networking)

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

Cara menggunakan Fast Android Networking

Termasuk dalam fitur dari FAN ini yaitu kode yang simple dan mudah digunakan, sebelum menggunakan library ini, pertama kalian harus menambahkan library ini ke project kalian, tambahkan baris kode ini di file build.gradle

implementation 'com.amitshekhar.android:android-networking:1.0.2'

Lalu tambahkan permission untuk akses ke Internet di AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

Lalu inisialisasikan di Activity dengan menambah baris kode berikut

AndroidNetworking.initialize(getApplicationContext());

Jika semua persyaratan diatas sudah terpenuhi, berikut contoh beberapa request yang bisa digunakan dengan Fast Android Networking ini :

Membuat Request GET

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

Membuat Request POST

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


JSONObject jsonObject = new JSONObject();
try {
    jsonObject.put("firstname", "Amit");
    jsonObject.put("lastname", "Shekhar");
} catch (JSONException e) {
  e.printStackTrace();
}
       
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    
                    }
                });  

Upload file ke Server

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

Membatalkan Request

AndroidNetworking.cancel("tag"); // Semua permintaan dengan tag yang diberikan akan dibatalkan. 

AndroidNetworking.forceCancel("tag");  // Semua permintaan dengan tag yang diberikan akan dibatalkan, bahkan jika ada ambang batas persen ditetapkan, itu akan dibatalkan dengan paksa. 

AndroidNetworking.cancelAll(); // Semua permintaan akan dibatalkan.  

AndroidNetworking.forceCancelAll(); // Semua permintaan akan dibatalkan, bahkan jika ada ambang batas persen, itu akan dibatalkan dengan paksa.   

Memuat gambar dari Internet ke ImageView

File .xml nya

<com .androidnetworking.widget.ANImageView
           android : id = " @ + id / imageView "
           android : layout_width = " 100dp "
           android : layout_height = " 100dp "
           android : layout_gravity = " center " />

Di file Java nya

imageView.setDefaultImageResId (R.drawable. default); 
      imageView.setErrorImageResId (R.drawable.error); 
      imageView.setImageUrl (imageUrl);   

Mendapatkan Bitmap dari url dengan beberapa parameter yang ditentukan

AndroidNetworking.get(imageUrl)
                 .setTag("imageRequestTag")
                 .setPriority(Priority.MEDIUM)
                 .setBitmapMaxHeight(100)
                 .setBitmapMaxWidth(100)
                 .setBitmapConfig(Bitmap.Config.ARGB_8888)
                 .build()
                 .getAsBitmap(new BitmapRequestListener() {
                    @Override
                    public void onResponse(Bitmap bitmap) {
                    // do anything with bitmap
                    }
                    @Override
                    public void onError(ANError error) {
                      // handle error
                    }
                });

Error Code Handling

public void onError(ANError error) {
   if (error.getErrorCode() != 0) {
       // menerima kesalahan dari server 
        // error.getErrorCode () - kode kesalahan dari server 
        // error.getErrorBody () - badan kesalahan dari server 
        // error.getErrorDetail () - hanya detail kesalahan 
        Log.d(TAG, "onError errorCode : " + error.getErrorCode());
        Log.d(TAG, "onError errorBody : " + error.getErrorBody());
        Log.d(TAG, "onError errorDetail : " + error.getErrorDetail());
        // dapatkan objek kesalahan yang diuraikan (Jika ApiError adalah kelas Anda) 
        ApiError apiError = error.getErrorAsObject(ApiError.class);
   } else {
        // error.getErrorDetail() : connectionError, parseError, requestCancelledError
        Log.d(TAG, "onError errorDetail : " + error.getErrorDetail());
   }
}

Hapus Bitmap dari cache atau hapus cache

AndroidNetworking.evictBitmap(key); // hapus bitmap dengan kunci dari LruCache 
AndroidNetworking.evictAllBitmap (); // bersihkan LruCache

referensi

Kesimpulan

Library Fast Android Networking (FAN) ini memiliki banyak kelebihan dibanding dengan library networking lainnya, tapi juga tidak menutup kemungkinan memiliki kelemahan dibanding library lain

Penggunaan library networking baiknya disesuaikan dengan kebutuhan yang ada. Coba lah untuk mencoba library lain seperti RetrofitVolleyLoopj, dan OkHttp untuk merasakan perbedaannya

Karena library ini bekerja diatas OkHttp menjadikannya sebuah library networking yang cepat, powerfull, dan juga ringkas dalam segi baris kode

Dengan berbagai fitur yang dimiliki, saya rasa library ini menjadi library networking yang pantas untuk kalian coba

Jika kalian ingin melihat project saya yang menggunakan library ini, kalian bisa lihat diartikel sebelumnya di RecycleView Dengan Rest API (Java) atau RecycleView Dengan Rest API (Kotlin)

Saya cukup sekian pembahasan tentang Library Fast Android Networking (FAN) ini semoga dapat menjadi referensi dan bermanfaat untuk kalian semua

Leave a Reply

Your email address will not be published. Required fields are marked *