Connexion d'une application Android et une base de données externe Mysql avec web services php Json (opérations CRUD)

Ce tutoriel est constitué par plusieurs vidéos qui vont vous montrer comment gérer une base de données externe ( toutes les opérations CRUD : ajout, modification, suppression et sélection de données) à travers une application Android. Il est bien détaillé et il vous guide pas à pas de sorte que vous n'aller pas rencontrer de grands problèmes pour la compréhension des  étapes nécessaires pour la création de ce petit projet. Il faut tout d'abord avoir les logiciels nécessaires (à part Android Studio bien sûr car ce tutoriel suppose que vous avez déjà un minimum de connaissance en développement Android). Il faut tout d'abord avoir un logiciel comme Xampp ou WampServer. De ma part je préfère le premier car il est plus professionnel. A travers l'un de ces deux logiciels nous pouvons avoir un SGBDR Mysql où nous allons créer notre base de données et un serveur web apache où nous allons héberger nos web services qui vont permettre la liaison entre l'application cliente Android et la base de données. 
Pour l'éditeur de texte pour le développement des web services en php il vaut mieux utiliser notePad++

Au niveau de la première vidéo vous aller apprendre à créer votre base et votre table et puis de développer vos RESFul web services qui vont permettre d'effectuer les opérations CRUD (ajout,sélection,modification et suppression). Les résultats fournis par ses web services seront sous format JSON.

Vidéo 1 : configuration de la base de données et création des web services :



Après avoir terminer la partie base de données et web services vous pouvez commencer le développement de la partie android. Vous pouvez créer un nouveau projet et dans le package consacré aux activité vous devez créer une classe java qui s'appelle JSONParser. Dans cette classe vous devez mettre le code suivant qui nous sera utile par la suite pour pouvoir consommer les résultats fournis par les web services.

Le code de la classe JSONParser.java est le suivant : 



import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;

public class JSONParser {

    String charset = "UTF-8";
    HttpURLConnection conn;
    DataOutputStream wr;
    StringBuilder result;
    URL urlObj;
    JSONObject jObj = null;
    StringBuilder sbParams;
    String paramsString;

    public JSONObject makeHttpRequest(String url, String method,
                                      HashMap params) {

        sbParams = new StringBuilder();
        int i = 0;
        for (String key : params.keySet()) {
            try {
                if (i != 0){
                    sbParams.append("&");
                }
                sbParams.append(key).append("=")
                        .append(URLEncoder.encode(params.get(key), charset));

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            i++;
        }

        if (method.equals("POST")) {
            // request method is POST
            try {
                urlObj = new URL(url);

                conn = (HttpURLConnection) urlObj.openConnection();

                conn.setDoOutput(true);

                conn.setRequestMethod("POST");

                conn.setRequestProperty("Accept-Charset", charset);

                conn.setReadTimeout(10000);
                conn.setConnectTimeout(15000);

                conn.connect();

                paramsString = sbParams.toString();

                wr = new DataOutputStream(conn.getOutputStream());
                wr.writeBytes(paramsString);
                wr.flush();
                wr.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        else if(method.equals("GET")){
            // request method is GET

            if (sbParams.length() != 0) {
                url += "?" + sbParams.toString();
            }

            try {
                urlObj = new URL(url);

                conn = (HttpURLConnection) urlObj.openConnection();

                conn.setDoOutput(false);

                conn.setRequestMethod("GET");

                conn.setRequestProperty("Accept-Charset", charset);

                conn.setConnectTimeout(15000);

                conn.connect();

            } catch (IOException e) {
                e.printStackTrace();
            }

        }

        try {
            //Receive the response from the server
            InputStream in = new BufferedInputStream(conn.getInputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            result = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }

            Log.d("JSON Parser", "result: " + result.toString());

        } catch (IOException e) {
            e.printStackTrace();
        }

        conn.disconnect();

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(result.toString());
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON Object
        return jObj;
    }
}



Vidéo 2 : Code Android pour effectuer un ajout de ligne dans la table de base de données :



Vidéo 3 : Code Android pour afficher les données de la base Mysql dans une ListView à travers un web service Rest json



Vidéo 4 : Affichage des détails d'une ligne après click sur un item de la ListView



Vidéo 5 : Modification et suppression d'une ligne dans la base Mysql à travers une activité android et un web service JSON




Commentaires

Posts les plus consultés de ce blog

Ionic 2 : Envoie d'une image vers un serveur web à l'aide de PHP et Angular 2

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json