SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Université Constantine 2
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
– Cours 13 –
Chapitre 9 : Connectivité et services Web
(Bonus)
Développement d’applications mobiles
2018/2019. Semestre 1
Université Constantine 2
Etudiants concernés
Faculté/Institut Département Niveau Spécialité
2018/2019. Semestre 1
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
Développement d’applications mobiles
Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA
Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA
– Cours 13 –
Chapitre 9 : Connectivité et services Web
(Bonus)
Université Constantine 2 3
Prérequis
Maîtrise de la programmation Android
Maîtrise des langages PHP et SQL
Objectifs du cours
Comprendre la programmation réseau et Web
Création d'un service Web connecté à une BD MySQL
Elaborer une communication avec un serveur Web sous Android
Résumé
© Dr. Chaouche A.-C.
Université Constantine 2 4
Architecture Clients-Serveur
© Dr. Chaouche A.-C.
@IP: 192.168.0.X
@Port: Y
Ali SaraMohammed
Université Constantine 2 5
Adressages IP
© Dr. Chaouche A.-C.
AliMohammed
Université Constantine 2 6
Ports
© Dr. Chaouche A.-C.
192.168.0.X
Ali
Université Constantine 2 7
La communication entre un appareil Android et un serveur, à travers :
Sockets
Bibliothèques Remote Procedural Call (RPC)
Services Web
Communication sous Android
© Dr. Chaouche A.-C.
Université Constantine 2 8
Comment ?
PHP récupère les données à partir d'une BD MySQL, qui seront par la suite
encodées au format JSON et envoyées au client Android
L'App Android récupère les données, les parse et les exploite dans l'App
Utilisation des services Web sous Android
© Dr. Chaouche A.-C.
App Android Serveur Web
(Apache)
Serveur MySQL
Université Constantine 2 9
Côté serveur
1. Préparer les projets
2. Lancer les serveurs Apache et MySQL (XAMPP)
3. Créer une BD via un client MySQL
4. Se connecter à la BD via un script PHP
5. Retourner des données au format JSON
Côté client
1. Préparer le projet Android
2. Vérifier l’accès à internet
3. Récupérer les données distantes sous Android
4. Parser les données JSON pour constituer les objets Java
5. Envoyer des données au serveur distant
Étapes de l'utilisation des services Web sous Android
© Dr. Chaouche A.-C.
Université Constantine 2 10
Projet Web en php
Dossier : "C:xampphtdocselearning_server"
Fichier php : getModules.php
Base de données MySQL
DB : elearning_db
Tables : module, week, et course
Étapes de l'utilisation des services Web sous Android
Serveur-1. Préparer les projets
© Dr. Chaouche A.-C.
Université Constantine 2 11
1. Installer Xampp v3.2.2
Choisir le chemin dans la racine : "C:xampp"
2. Lancer XAMPP Control Panel
Lancer le serveur Apache (web)
Lancer le serveur MySQL
Étapes de l'utilisation des services Web sous Android
Serveur-2. Lancer les serveurs Apache et MySQL sous Xampp
© Dr. Chaouche A.-C.
Université Constantine 2 12
1. Utiliser un client MySQL
Exemples : PhpMyAdmin, HeidiSQL
2. Créer une nouvelle session :
Host : "localhost"
Port : 3306
Utilisateur : "root"
Mot de passe : ""
3. Créer la BD : elearning_db
4. Créer les tables : module, week, et course
module : id(INT), accronym(VARCHAR), name(VARCHAR),
description(VARCHAR), credit(INT)
week : ...
Course : ...
Étapes de l'utilisation des services Web sous Android
Serveur-3. Créer une BD via un client MySQL
© Dr. Chaouche A.-C.
Université Constantine 2 13
Étapes de l'utilisation des services Web sous Android
Serveur-4. Se connecter à la BD via un script PHP
© Dr. Chaouche A.-C.
/elearning_server/getModules.php
<?php
$db_host="localhost"; $db_uid="root"; $db_pass=""; $db_name="elearning_db";
$db_con = mysqli_connect($db_host, $db_uid, $db_pass, $db_name);
$sql = "SELECT * FROM module";
$result = mysqli_query($db_con, $sql);
while($row = mysqli_fetch_assoc($result)) $output[] = $row;
mysqli_close($db_con);
header('Content-Type: application/json');
print(json_encode($output));
http_response_code(200);
?>
Dans le dossier : C:xampphtdocselearning_server
Université Constantine 2 14
JSON : JavaScript Object Notation
Objets : commencent et se terminent par {}
Attributs d'objet : sous forme d’un dictionnaire (clé/valeur séparés by ‘:‘). Les
attributs sont séparés par des virgules ‘, ‘
Tableaux : contiennent un ensemble d’objets et commencent et se terminent
par []. Les objets sont séparés par des virgules ‘, ‘
Valeurs : peuvent être des strings, des numériques, des objets, des tableaux,
true, false ou null.
Strings : sont englobes par "" et contiennent des caractères Unicode, incluant
les caractère d'échappement (par exemple, le saut de ligne n)
Étapes de l'utilisation des services Web sous Android
Serveur-5. Retourner des données au format JSON
© Dr. Chaouche A.-C.
[
{
id: "1",
accronym: "DAM",
name: "Développement d’applications mobiles",
...
weeks : [ ... ]
}, ...
]
Université Constantine 2 15
Lancer dans le navigateur :
http://[server]/elearning_server/getModules.php
Sous Chrome, l'extension JSONView permet
de mieux afficher le format JSON
TP5a : Accéder au serveur via le navigateur
© Dr. Chaouche A.-C.
Université Constantine 2 16
Côté serveur
1. Préparer les projets
2. Lancer les serveurs Apache et MySQL (XAMPP)
3. Créer une BD via un client MySQL
4. Se connecter à la BD via un script PHP
5. Retourner des données au format JSON
Côté client
1. Préparer le projet Android
2. Vérifier l’accès à internet
3. Récupérer les données distantes sous Android
4. Parser les données JSON pour constituer les objets Java
5. Envoyer des données au serveur distant
Étapes de l'utilisation des services Web sous Android
© Dr. Chaouche A.-C.
Université Constantine 2 17
Ajouter la permission :
Préparer l'URL : http://server/elearning_server/getModules.php
Étapes de l'utilisation des services Web sous Android
Client-1. Préparer le projet Android
© Dr. Chaouche A.-C.
/manifests/AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
...
/java/MainActivity.java
String urlString = "http://server/elearning_server/getModules.php";
...
Université Constantine 2 18
Étapes de l'utilisation des services Web sous Android
Client-2. Vérifier l’accès à internet (Facultatif)
© Dr. Chaouche A.-C.
/java/MainActivity.java
public static boolean checkConnection(Context ctx) {
ConnectivityManager connectivityManager = (ConnectivityManager)
ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected() ||
(networkInfo.getType() != ConnectivityManager.TYPE_WIFI &&
networkInfo.getType() != ConnectivityManager.TYPE_MOBILE)) {
// No internet connection
return false;
} else
return true;
}
Université Constantine 2 19
2 modes :
1. En mode synchrone
(l'IHM est bloquée en attendant la réponse)
2. En mode asynchrone
(la requête est exécutée en arrière plan)
En mode asynchrone :
Android SDK : android.os.AsyncTask
Doc : https://developer.android.com/reference/android/os/AsyncTask.html
Bibliothèque externe : com.koushikdutta.ion.Ion
Doc : https://github.com/koush/ion
Étapes de l'utilisation des services Web sous Android
Client-3. Récupérer les données distantes sous Android
© Dr. Chaouche A.-C.
App Android Serveur Web
(Apache)
Université Constantine 2 20
Bibliothèque : com.koushikdutta.ion:ion:2.1.9
Méthode 1 :
Project Structure > Modules > app
> Onglet Depenendencies
Méthode 2 :
Dans un script Gradle
Étapes de l'utilisation des services Web sous Android
Client-3.a. Importer la bibliothèque Ion
© Dr. Chaouche A.-C.
/Gradle Scripts/build.gradle (Module: app)
...
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.koushikdutta.ion:ion:2.1.9'
}
Université Constantine 2 21
Étapes de l'utilisation des services Web sous Android
Client-3.b. Afficher un ProgressDialog
© Dr. Chaouche A.-C.
/java/MainActivity.java
ProgressDialog pDialog;
public void getRemoteModules() {
pDialog = new ProgressDialog(this);
pDialog.setMessage("Getting list of modules...");
pDialog.setIndeterminate(true);
pDialog.setCancelable(false);
pDialog.show();
...
}
Université Constantine 2 22
Étapes de l'utilisation des services Web sous Android
Client-3.c. Récupérer un String
© Dr. Chaouche A.-C.
/java/MainActivity.java
public void getRemoteModules() {
...
Ion.with(this)
.load(urlString)
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
pDialog.dismiss();
if(result == null)
Log.d(TAG, "No response from the server!!!");
else {
// Traitement de result
}
}
});
}
Université Constantine 2 23
Étapes de l'utilisation des services Web sous Android
Client-3.d. Récupérer la réponse HTTP complète
© Dr. Chaouche A.-C.
/java/MainActivity.java
public void getRemoteModules() {
...
Ion.with(this)
.load(urlString)
.asString()
.withResponse()
.setCallback(new FutureCallback<Response<String>>() {
@Override
public void onCompleted(Exception e, Response<String> response){
...
if(response != null){
Log.d(TAG, "Http code: " + response.getHeaders().code());
Log.d(TAG, "Result: " + response.getResult());
}
...
}
});
}
Université Constantine 2 24
Étapes de l'utilisation des services Web sous Android
Client-4.a. Préparer le modèle de données
© Dr. Chaouche A.-C.
/java/Module.java
public class Module {
int id; ...
List<Week> weeks;
}
/java/Week.java
public class Week {
int id; ...
List<Course> courses;
}
/java/Course.java
public class Course {
int id; ...
}
Université Constantine 2 25
Bibliothèque : com.google.code.gson:gson:2.8.0
Méthode 1 :
Project Structure > Modules > app
> Onglet Depenendencies
Méthode 2 :
Dans un script Gradle
Étapes de l'utilisation des services Web sous Android
Client-4.b. Importer la bibliothèque Gson
© Dr. Chaouche A.-C.
/Gradle Scripts/build.gradle (Module: app)
...
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.code.gson:gson:2.8.0'
}
Université Constantine 2 26
Étapes de l'utilisation des services Web sous Android
Client-4.3. Parser la réponse Json
© Dr. Chaouche A.-C.
/java/Module.java
public static Module getModuleFromJson(String json){
Gson gson = new Gson();
Module module = gson.fromJson(json, Module.class);
return module;
}
public static List<Module> getListOfModulesFromJson(String json){
Gson gson = new Gson();
Type type = new TypeToken<List<Module>>(){}.getType();
List<Module> modules = gson.fromJson(json, type);
return modules;
}
Université Constantine 2 27
1. Préparer l'URL
2. Récupérer la liste des modules depuis le serveur (en utilisant Ion)
3. Parser la liste des modules (en utilisant Gson)
TP5b : Récupérer les données distantes
© Dr. Chaouche A.-C.
String urlString = "http://server/eleanring_server/getModules.php";
Ion.with(this).load(urlString) ... .setCallback(...);
List<Module> modules = Module.getListOfModulesFromJson(json);
Université Constantine 2 28
Étapes de l'utilisation des services Web sous Android
Client-5. Envoyer des données au serveur (en GET)
© Dr. Chaouche A.-C.
/java/MainActivity.java
...
Ion.with(this)
.load(urlString)
.asString()
.withResponse()
.setCallback(new FutureCallback<Response<String>>() {
@Override
public void onCompleted(Exception e, Response<String> response){
...
}
});
...
urlString = "http://[server]/elearning_server/addModule.php?...";
Université Constantine 2 29
1. Préparer l'URL
2. Envoyer la requête au serveur (en utilisant Ion)
3. Vérifier le bon traitement de la requête
TP5c : Envoyer des données au serveur
© Dr. Chaouche A.-C.
String urlString = "http://[server]/elearning_server/" +
"addModule.php?key=X&id=Y&...";
Ion.with(this).load(urlString) ... .setCallback(...);
...
if(response.getHeaders().code() == 200) { ... }
...
Université Constantine 2 30
Raccourcis utiles sous Android Studio
File > Settings > Onglet Keymap > Keymaps : Netbeans
© Dr. Chaouche A.-C.
+ + C : Commenter/Décommenter les lignes sélectionnées
+ + ↓/↑ : Dupliquer la ligne courante
+ + ↓/↑ : Déplacer la ligne courante vers le bas ou vers le haut
+ : Rechercher des fichiers dans le projet
+ R : (Refactoring) Modifier le code (Classe, variable, méthode, …)
+ : Générer du code (Constructeurs, Getters, Setters, …)
+ (ou ): Naviguer vers la déclaration/l'utilisation de la classe, méthode, ...
+ ←/→ : Revenir/Avancer à une ligne du code éditée
+ + F : Formater/Réorganiser le code source
+ + : Expande/Collapse
+ + + : Expande/Collapse all { }
(maintenu) + : Sélection de colonne
Université Constantine 2 31
Snippets (macros) sous Android Studio
File > Settings > Editor > Live Template
© Dr. Chaouche A.-C.
fbc: findViewById(R.id.$resId$);
Toast: Toast.makeText($context$, "$text$", Toast.LENGTH_SHORT).show();
const: private static final int $name$ = $value$;
logi: Log.i(TAG, "$METHOD_NAME$: $content$");
fori: for(int $INDEX$ = 0; $INDEX$ < $LIMIT$; $INDEX$++) {}
psvm: public static void main(String[] args){ $END$ }
TR: try ($ELEMENT_TYPE$ $VAR$ = $SELECTION$) { $END$ }
...
Université Constantine 2 32
Documents sont accessibles :
Plateforme e-learning de l’université Constantine 2
Lien : http://elearning.univ-constantine2.dz/
Documents et Rendus
© Dr. Chaouche A.-C.

Contenu connexe

Tendances

Applications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogueApplications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogueAhmed-Chawki Chaouche
 
Applications Android - cours 6 : Structure d’un projet Android
Applications Android - cours 6 :  Structure d’un projet AndroidApplications Android - cours 6 :  Structure d’un projet Android
Applications Android - cours 6 : Structure d’un projet AndroidAhmed-Chawki Chaouche
 
Applications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielApplications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielAhmed-Chawki Chaouche
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...ENSET, Université Hassan II Casablanca
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésLilia Sfaxi
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Présentation Flutter
Présentation FlutterPrésentation Flutter
Présentation FlutterAppstud
 

Tendances (20)

Applications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogueApplications Android - cours 11 : Boites de dialogue
Applications Android - cours 11 : Boites de dialogue
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Applications Android - cours 6 : Structure d’un projet Android
Applications Android - cours 6 :  Structure d’un projet AndroidApplications Android - cours 6 :  Structure d’un projet Android
Applications Android - cours 6 : Structure d’un projet Android
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Struts
StrutsStruts
Struts
 
Applications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielApplications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matériel
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
P3 listes et elements graphiques avancés
P3 listes et elements graphiques avancésP3 listes et elements graphiques avancés
P3 listes et elements graphiques avancés
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Présentation Flutter
Présentation FlutterPrésentation Flutter
Présentation Flutter
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 

Similaire à Applications Android - cours 13 : Connectivité et services Web

Applications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesApplications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesAhmed-Chawki Chaouche
 
Construire une PWA connectée à WordPress
Construire une PWA connectée à WordPressConstruire une PWA connectée à WordPress
Construire une PWA connectée à WordPressBenjamin LUPU
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Cynapsys It Hotspot
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Microsoft Décideurs IT
 
Certification mcsd web application développeur .net mcsd
Certification mcsd web application   développeur .net mcsdCertification mcsd web application   développeur .net mcsd
Certification mcsd web application développeur .net mcsdEGILIA Learning
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
Presentation cynapsys
Presentation cynapsysPresentation cynapsys
Presentation cynapsysbaltagi
 
Ateliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open sourceAteliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open sourceKorteby Farouk
 
Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1Mohamed Ouederni
 
Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1realtn
 

Similaire à Applications Android - cours 13 : Connectivité et services Web (20)

Applications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobilesApplications Android - Cours 2 : OS mobiles
Applications Android - Cours 2 : OS mobiles
 
Construire une PWA connectée à WordPress
Construire une PWA connectée à WordPressConstruire une PWA connectée à WordPress
Construire une PWA connectée à WordPress
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017
 
Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...Windows phone 7 sync application sur Azure, création d'application offline re...
Windows phone 7 sync application sur Azure, création d'application offline re...
 
Certification mcsd web application développeur .net mcsd
Certification mcsd web application   développeur .net mcsdCertification mcsd web application   développeur .net mcsd
Certification mcsd web application développeur .net mcsd
 
Offre technique
Offre techniqueOffre technique
Offre technique
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
CV-DEQQAQ_AYOUB
CV-DEQQAQ_AYOUBCV-DEQQAQ_AYOUB
CV-DEQQAQ_AYOUB
 
CV AIT ZEOUAY Amrane
CV AIT ZEOUAY AmraneCV AIT ZEOUAY Amrane
CV AIT ZEOUAY Amrane
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Presentation cynapsys
Presentation cynapsysPresentation cynapsys
Presentation cynapsys
 
Ateliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open sourceAteliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open source
 
Cv khouloud dhouib
Cv khouloud dhouibCv khouloud dhouib
Cv khouloud dhouib
 
TP GWT JDEV 2015
TP GWT JDEV 2015TP GWT JDEV 2015
TP GWT JDEV 2015
 
12-Factor
12-Factor12-Factor
12-Factor
 
Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1
 
Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1Presentation certification 70-536 atelier 1
Presentation certification 70-536 atelier 1
 

Dernier

Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 

Dernier (15)

Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 

Applications Android - cours 13 : Connectivité et services Web

  • 1. Université Constantine 2 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz – Cours 13 – Chapitre 9 : Connectivité et services Web (Bonus) Développement d’applications mobiles 2018/2019. Semestre 1
  • 2. Université Constantine 2 Etudiants concernés Faculté/Institut Département Niveau Spécialité 2018/2019. Semestre 1 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz Développement d’applications mobiles Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA – Cours 13 – Chapitre 9 : Connectivité et services Web (Bonus)
  • 3. Université Constantine 2 3 Prérequis Maîtrise de la programmation Android Maîtrise des langages PHP et SQL Objectifs du cours Comprendre la programmation réseau et Web Création d'un service Web connecté à une BD MySQL Elaborer une communication avec un serveur Web sous Android Résumé © Dr. Chaouche A.-C.
  • 4. Université Constantine 2 4 Architecture Clients-Serveur © Dr. Chaouche A.-C. @IP: 192.168.0.X @Port: Y Ali SaraMohammed
  • 5. Université Constantine 2 5 Adressages IP © Dr. Chaouche A.-C. AliMohammed
  • 6. Université Constantine 2 6 Ports © Dr. Chaouche A.-C. 192.168.0.X Ali
  • 7. Université Constantine 2 7 La communication entre un appareil Android et un serveur, à travers : Sockets Bibliothèques Remote Procedural Call (RPC) Services Web Communication sous Android © Dr. Chaouche A.-C.
  • 8. Université Constantine 2 8 Comment ? PHP récupère les données à partir d'une BD MySQL, qui seront par la suite encodées au format JSON et envoyées au client Android L'App Android récupère les données, les parse et les exploite dans l'App Utilisation des services Web sous Android © Dr. Chaouche A.-C. App Android Serveur Web (Apache) Serveur MySQL
  • 9. Université Constantine 2 9 Côté serveur 1. Préparer les projets 2. Lancer les serveurs Apache et MySQL (XAMPP) 3. Créer une BD via un client MySQL 4. Se connecter à la BD via un script PHP 5. Retourner des données au format JSON Côté client 1. Préparer le projet Android 2. Vérifier l’accès à internet 3. Récupérer les données distantes sous Android 4. Parser les données JSON pour constituer les objets Java 5. Envoyer des données au serveur distant Étapes de l'utilisation des services Web sous Android © Dr. Chaouche A.-C.
  • 10. Université Constantine 2 10 Projet Web en php Dossier : "C:xampphtdocselearning_server" Fichier php : getModules.php Base de données MySQL DB : elearning_db Tables : module, week, et course Étapes de l'utilisation des services Web sous Android Serveur-1. Préparer les projets © Dr. Chaouche A.-C.
  • 11. Université Constantine 2 11 1. Installer Xampp v3.2.2 Choisir le chemin dans la racine : "C:xampp" 2. Lancer XAMPP Control Panel Lancer le serveur Apache (web) Lancer le serveur MySQL Étapes de l'utilisation des services Web sous Android Serveur-2. Lancer les serveurs Apache et MySQL sous Xampp © Dr. Chaouche A.-C.
  • 12. Université Constantine 2 12 1. Utiliser un client MySQL Exemples : PhpMyAdmin, HeidiSQL 2. Créer une nouvelle session : Host : "localhost" Port : 3306 Utilisateur : "root" Mot de passe : "" 3. Créer la BD : elearning_db 4. Créer les tables : module, week, et course module : id(INT), accronym(VARCHAR), name(VARCHAR), description(VARCHAR), credit(INT) week : ... Course : ... Étapes de l'utilisation des services Web sous Android Serveur-3. Créer une BD via un client MySQL © Dr. Chaouche A.-C.
  • 13. Université Constantine 2 13 Étapes de l'utilisation des services Web sous Android Serveur-4. Se connecter à la BD via un script PHP © Dr. Chaouche A.-C. /elearning_server/getModules.php <?php $db_host="localhost"; $db_uid="root"; $db_pass=""; $db_name="elearning_db"; $db_con = mysqli_connect($db_host, $db_uid, $db_pass, $db_name); $sql = "SELECT * FROM module"; $result = mysqli_query($db_con, $sql); while($row = mysqli_fetch_assoc($result)) $output[] = $row; mysqli_close($db_con); header('Content-Type: application/json'); print(json_encode($output)); http_response_code(200); ?> Dans le dossier : C:xampphtdocselearning_server
  • 14. Université Constantine 2 14 JSON : JavaScript Object Notation Objets : commencent et se terminent par {} Attributs d'objet : sous forme d’un dictionnaire (clé/valeur séparés by ‘:‘). Les attributs sont séparés par des virgules ‘, ‘ Tableaux : contiennent un ensemble d’objets et commencent et se terminent par []. Les objets sont séparés par des virgules ‘, ‘ Valeurs : peuvent être des strings, des numériques, des objets, des tableaux, true, false ou null. Strings : sont englobes par "" et contiennent des caractères Unicode, incluant les caractère d'échappement (par exemple, le saut de ligne n) Étapes de l'utilisation des services Web sous Android Serveur-5. Retourner des données au format JSON © Dr. Chaouche A.-C. [ { id: "1", accronym: "DAM", name: "Développement d’applications mobiles", ... weeks : [ ... ] }, ... ]
  • 15. Université Constantine 2 15 Lancer dans le navigateur : http://[server]/elearning_server/getModules.php Sous Chrome, l'extension JSONView permet de mieux afficher le format JSON TP5a : Accéder au serveur via le navigateur © Dr. Chaouche A.-C.
  • 16. Université Constantine 2 16 Côté serveur 1. Préparer les projets 2. Lancer les serveurs Apache et MySQL (XAMPP) 3. Créer une BD via un client MySQL 4. Se connecter à la BD via un script PHP 5. Retourner des données au format JSON Côté client 1. Préparer le projet Android 2. Vérifier l’accès à internet 3. Récupérer les données distantes sous Android 4. Parser les données JSON pour constituer les objets Java 5. Envoyer des données au serveur distant Étapes de l'utilisation des services Web sous Android © Dr. Chaouche A.-C.
  • 17. Université Constantine 2 17 Ajouter la permission : Préparer l'URL : http://server/elearning_server/getModules.php Étapes de l'utilisation des services Web sous Android Client-1. Préparer le projet Android © Dr. Chaouche A.-C. /manifests/AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET"/> ... /java/MainActivity.java String urlString = "http://server/elearning_server/getModules.php"; ...
  • 18. Université Constantine 2 18 Étapes de l'utilisation des services Web sous Android Client-2. Vérifier l’accès à internet (Facultatif) © Dr. Chaouche A.-C. /java/MainActivity.java public static boolean checkConnection(Context ctx) { ConnectivityManager connectivityManager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo == null || !networkInfo.isConnected() || (networkInfo.getType() != ConnectivityManager.TYPE_WIFI && networkInfo.getType() != ConnectivityManager.TYPE_MOBILE)) { // No internet connection return false; } else return true; }
  • 19. Université Constantine 2 19 2 modes : 1. En mode synchrone (l'IHM est bloquée en attendant la réponse) 2. En mode asynchrone (la requête est exécutée en arrière plan) En mode asynchrone : Android SDK : android.os.AsyncTask Doc : https://developer.android.com/reference/android/os/AsyncTask.html Bibliothèque externe : com.koushikdutta.ion.Ion Doc : https://github.com/koush/ion Étapes de l'utilisation des services Web sous Android Client-3. Récupérer les données distantes sous Android © Dr. Chaouche A.-C. App Android Serveur Web (Apache)
  • 20. Université Constantine 2 20 Bibliothèque : com.koushikdutta.ion:ion:2.1.9 Méthode 1 : Project Structure > Modules > app > Onglet Depenendencies Méthode 2 : Dans un script Gradle Étapes de l'utilisation des services Web sous Android Client-3.a. Importer la bibliothèque Ion © Dr. Chaouche A.-C. /Gradle Scripts/build.gradle (Module: app) ... dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.koushikdutta.ion:ion:2.1.9' }
  • 21. Université Constantine 2 21 Étapes de l'utilisation des services Web sous Android Client-3.b. Afficher un ProgressDialog © Dr. Chaouche A.-C. /java/MainActivity.java ProgressDialog pDialog; public void getRemoteModules() { pDialog = new ProgressDialog(this); pDialog.setMessage("Getting list of modules..."); pDialog.setIndeterminate(true); pDialog.setCancelable(false); pDialog.show(); ... }
  • 22. Université Constantine 2 22 Étapes de l'utilisation des services Web sous Android Client-3.c. Récupérer un String © Dr. Chaouche A.-C. /java/MainActivity.java public void getRemoteModules() { ... Ion.with(this) .load(urlString) .asString() .setCallback(new FutureCallback<String>() { @Override public void onCompleted(Exception e, String result) { pDialog.dismiss(); if(result == null) Log.d(TAG, "No response from the server!!!"); else { // Traitement de result } } }); }
  • 23. Université Constantine 2 23 Étapes de l'utilisation des services Web sous Android Client-3.d. Récupérer la réponse HTTP complète © Dr. Chaouche A.-C. /java/MainActivity.java public void getRemoteModules() { ... Ion.with(this) .load(urlString) .asString() .withResponse() .setCallback(new FutureCallback<Response<String>>() { @Override public void onCompleted(Exception e, Response<String> response){ ... if(response != null){ Log.d(TAG, "Http code: " + response.getHeaders().code()); Log.d(TAG, "Result: " + response.getResult()); } ... } }); }
  • 24. Université Constantine 2 24 Étapes de l'utilisation des services Web sous Android Client-4.a. Préparer le modèle de données © Dr. Chaouche A.-C. /java/Module.java public class Module { int id; ... List<Week> weeks; } /java/Week.java public class Week { int id; ... List<Course> courses; } /java/Course.java public class Course { int id; ... }
  • 25. Université Constantine 2 25 Bibliothèque : com.google.code.gson:gson:2.8.0 Méthode 1 : Project Structure > Modules > app > Onglet Depenendencies Méthode 2 : Dans un script Gradle Étapes de l'utilisation des services Web sous Android Client-4.b. Importer la bibliothèque Gson © Dr. Chaouche A.-C. /Gradle Scripts/build.gradle (Module: app) ... dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.google.code.gson:gson:2.8.0' }
  • 26. Université Constantine 2 26 Étapes de l'utilisation des services Web sous Android Client-4.3. Parser la réponse Json © Dr. Chaouche A.-C. /java/Module.java public static Module getModuleFromJson(String json){ Gson gson = new Gson(); Module module = gson.fromJson(json, Module.class); return module; } public static List<Module> getListOfModulesFromJson(String json){ Gson gson = new Gson(); Type type = new TypeToken<List<Module>>(){}.getType(); List<Module> modules = gson.fromJson(json, type); return modules; }
  • 27. Université Constantine 2 27 1. Préparer l'URL 2. Récupérer la liste des modules depuis le serveur (en utilisant Ion) 3. Parser la liste des modules (en utilisant Gson) TP5b : Récupérer les données distantes © Dr. Chaouche A.-C. String urlString = "http://server/eleanring_server/getModules.php"; Ion.with(this).load(urlString) ... .setCallback(...); List<Module> modules = Module.getListOfModulesFromJson(json);
  • 28. Université Constantine 2 28 Étapes de l'utilisation des services Web sous Android Client-5. Envoyer des données au serveur (en GET) © Dr. Chaouche A.-C. /java/MainActivity.java ... Ion.with(this) .load(urlString) .asString() .withResponse() .setCallback(new FutureCallback<Response<String>>() { @Override public void onCompleted(Exception e, Response<String> response){ ... } }); ... urlString = "http://[server]/elearning_server/addModule.php?...";
  • 29. Université Constantine 2 29 1. Préparer l'URL 2. Envoyer la requête au serveur (en utilisant Ion) 3. Vérifier le bon traitement de la requête TP5c : Envoyer des données au serveur © Dr. Chaouche A.-C. String urlString = "http://[server]/elearning_server/" + "addModule.php?key=X&id=Y&..."; Ion.with(this).load(urlString) ... .setCallback(...); ... if(response.getHeaders().code() == 200) { ... } ...
  • 30. Université Constantine 2 30 Raccourcis utiles sous Android Studio File > Settings > Onglet Keymap > Keymaps : Netbeans © Dr. Chaouche A.-C. + + C : Commenter/Décommenter les lignes sélectionnées + + ↓/↑ : Dupliquer la ligne courante + + ↓/↑ : Déplacer la ligne courante vers le bas ou vers le haut + : Rechercher des fichiers dans le projet + R : (Refactoring) Modifier le code (Classe, variable, méthode, …) + : Générer du code (Constructeurs, Getters, Setters, …) + (ou ): Naviguer vers la déclaration/l'utilisation de la classe, méthode, ... + ←/→ : Revenir/Avancer à une ligne du code éditée + + F : Formater/Réorganiser le code source + + : Expande/Collapse + + + : Expande/Collapse all { } (maintenu) + : Sélection de colonne
  • 31. Université Constantine 2 31 Snippets (macros) sous Android Studio File > Settings > Editor > Live Template © Dr. Chaouche A.-C. fbc: findViewById(R.id.$resId$); Toast: Toast.makeText($context$, "$text$", Toast.LENGTH_SHORT).show(); const: private static final int $name$ = $value$; logi: Log.i(TAG, "$METHOD_NAME$: $content$"); fori: for(int $INDEX$ = 0; $INDEX$ < $LIMIT$; $INDEX$++) {} psvm: public static void main(String[] args){ $END$ } TR: try ($ELEMENT_TYPE$ $VAR$ = $SELECTION$) { $END$ } ...
  • 32. Université Constantine 2 32 Documents sont accessibles : Plateforme e-learning de l’université Constantine 2 Lien : http://elearning.univ-constantine2.dz/ Documents et Rendus © Dr. Chaouche A.-C.