Membuat Aplikasi Berita Android dengan Android Studio, PHP dan Mysqli - ApiConfig & RequestHandler

Membuat Aplikasi Berita Android dengan Android Studio, PHP dan Mysqli - ApiConfig & RequestHandler

Table of contents



Membuat Aplikasi Berita Android dengan Android Studio, PHP dan Mysqli - Selamat malam blogger, lama rasanya saya tidak pernah meng-update blog sederhana ini karena sedikit kesibukan. Pada kesempatan ini, saya akan melanjutkan seri membuat website professional dengan PHP dan Mysqli yang sudah saya janjikan di artikel sebelumnya bahwa website ini akan dilengkapi dengan sebuah aplikasi android. Bagi anda yang belum membaca seri membuat website tersebut, silahkan anda baca dan ikuti beberapa langkah mudah dalam membuat website dari Nol (website from strach):

Anda juga bisa membaca artikel lepas yang masih berhubungan dengan seri membuat website professional dengan PHP dan Mysql

Khusus untuk artikel ini, merupakan lanjutan dari artikel sebelumnya. Jadi pastikan anda membaca part sebelunya dibawah ini:



Di Part 3 ini, sesuai judulnya saya akan menghubungkan aplikasi android studio (Client) dengan Web base (SERVER), pastikan anda membaca dua artikel tentang android studio diatas.

ApiConfig

  1. Buka project anda, pada contoh project saya bernama "SubaPHP"
  2. Klik File >> New >> Java Class  dan beri nama "ApiConfig"
  3. Copy kode dibawah dan simpan 
    package com.suba.php;
    
    public class ApiConfig {
    
            public static final String BASE_URL = "http://hospital.nawadwipa.id/";
            public static final String URL_GET_ALL = "https://hospital.nawadwipa.id/api/post_list.php";
            public static final String URL_GET_POST = "https://hospital.nawadwipa.id/api/post_detail.php?id=";
    
            public static final String TAG_JSON_ARRAY="result";
            public static final String TAG_ID = "id";
            public static final String TAG_JUDUL = "judul";
            public static final String TAG_ARTIKEL = "content";
            public static final String TAG_GAMBAR = "gambar_utama";
            public static final String TAG_PUBLISH = "publish_date";
            public static final String TAG_KATEGORI = "kategori";
    
            public static final String POST_ID = "id";
    
            public static final String KEY_POST_JUDUL = "judul";
            public static final String KEY_POST_ARTIKEL = "content";
            public static final String KEY_POST_GAMBAR = "gambar_utama";
            public static final String KEY_POST_PUBLISH = "publish_date";
            public static final String KEY_POST_KATEGORI = "kategori";
    }
    ​
  4. Lihat baris dibawah, sedikit penjelasan mengenai apa yang ingin saya tampilkan pada MainActivity nantinya adalah sebuah "loop" dari artikel yang ada pada website dan sudah saya bahas di artikel sebelumnya (Lihat disini)
    public static final String URL_GET_ALL = "https://hospital.nawadwipa.id/api/post_list.php";

RequestHandler

Java Class ini berfungsi untuk menangani permintaan jaringan. 

  1. Buat file baru kembali, Klik File >> New >> JavaClass dan berinama "RequestHandler"
  2. Copy baris kode berikut dan paste
    package com.suba.php;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.net.ssl.HttpsURLConnection;
    
    public class RequestHandler {
    
        public String sendPostRequest(String requestURL,
                                      HashMap postDataParams) {
    
            URL url;
            StringBuilder sb = new StringBuilder();
            try {
                url = new URL(requestURL);
    
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
                conn.setReadTimeout(15000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);
    
                OutputStream os = conn.getOutputStream();
    
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(getPostDataString(postDataParams));
    
                writer.flush();
                writer.close();
                os.close();
                int responseCode = conn.getResponseCode();
    
                if (responseCode == HttpsURLConnection.HTTP_OK) {
    
                    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    sb = new StringBuilder();
                    String response;
                    while ((response = br.readLine()) != null){
                        sb.append(response);
                    }
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sb.toString();
        }
    
        public String sendGetRequest(String requestURL){
            StringBuilder sb =new StringBuilder();
            try {
                URL url = new URL(requestURL);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    
                String s;
                while((s=bufferedReader.readLine())!=null){
                    sb.append(s+"\n");
                }
            }catch(Exception e){
            }
            return sb.toString();
        }
    
        public String sendGetRequestParam(String requestURL, String id){
            StringBuilder sb =new StringBuilder();
            try {
                URL url = new URL(requestURL+id);
                HttpURLConnection con = (HttpURLConnection) url.openConnection();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    
                String s;
                while((s=bufferedReader.readLine())!=null){
                    sb.append(s+"\n");
                }
            }catch(Exception e){
            }
            return sb.toString();
        }
    
        private String getPostDataString(HashMap params) throws UnsupportedEncodingException {
            StringBuilder result = new StringBuilder();
            boolean first = true;
            for (Map.Entry entry : params.entrySet()) {
                if (first)
                    first = false;
                else
                    result.append("&");
    
                result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
                result.append("=");
                result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
            }
    
            return result.toString();
        }
    }​
  3.  Simpan

CustomImageAdapter

Fungsi dari Java Class ini adalah untuk menampilkan gambar dari sebuah URL, karena nantinya untuk loop pada MainAcvity akan menggunakan ListView

  1. Buat file baru kembali, Klik File >> New >> JavaClass dan berinama "CustomImageAdapter"
  2. Copy baris kode berikut dan paste 
    package com.suba.php;
    import android.content.Context;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.SimpleAdapter;
    
    import com.squareup.picasso.*;
    
    import java.util.List;
    import java.util.Map;
    
    public class CustomImageAdapter extends SimpleAdapter {
    
        public CustomImageAdapter(Context context, List<? extends Map list, int resource, String[] from, int[] to){
            super(context, list, resource, from, to);
        }
        public View getView(int position, View convertView, ViewGroup parent){
    
            View v = super.getView(position, convertView, parent);
    
            ImageView imgvw = (ImageView) v.getTag();
            if(imgvw == null){
                imgvw = (ImageView) v.findViewById(R.id.imageIv);
                v.setTag(imgvw);
            }
            // get the url from the data in the `Map`
            String url = ((Map)getItem(position)).get("gambar").toString();
            Picasso.get().load(url).into(imgvw);
            return v;
        }
    }
    ​
  3. Simpan

Pada Artikel Membuat Aplikasi Berita Android dengan Android Studio, PHP dan Mysqli - Part 3: ApiConfig dan RequestHandler ini, sudah membuat 3 class baru. Di Artikel berikutnya saya akan mulai untuk membuat layout main_activity untuk loop dan single/detail dari artikel.



Artikel Terkait