SlideShare une entreprise Scribd logo
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

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 

Tendances (20)

Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
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
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
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...
 
Java 8 - collections et stream
Java 8 - collections et streamJava 8 - collections et stream
Java 8 - collections et stream
 
Spring security
Spring securitySpring security
Spring security
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylist
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 

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

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
 
Presentation cynapsys
Presentation cynapsysPresentation cynapsys
Presentation cynapsys
baltagi
 
Ateliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open sourceAteliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open source
Korteby Farouk
 

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
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
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
 

Dernier

support de formation Consignation et déconsignation des energies et produits...
support de formation  Consignation et déconsignation des energies et produits...support de formation  Consignation et déconsignation des energies et produits...
support de formation Consignation et déconsignation des energies et produits...
ABDELHADI ENNAIR
 
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
schneiderbeatrice78
 
Cours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurCours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieur
NdeyeAminataDond
 

Dernier (14)

support de formation Consignation et déconsignation des energies et produits...
support de formation  Consignation et déconsignation des energies et produits...support de formation  Consignation et déconsignation des energies et produits...
support de formation Consignation et déconsignation des energies et produits...
 
Bilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxBilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptx
 
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
 
Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016
 
Cours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurCours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieur
 
Résultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfRésultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdf
 
Épreuve de leçon SII.pptx
Épreuve de leçon  SII.pptxÉpreuve de leçon  SII.pptx
Épreuve de leçon SII.pptx
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?
 
Formation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distancielFormation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distanciel
 
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxSainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
 
Cahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdfCahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
 
4 expositions à voir à Paris.pptx
4   expositions    à   voir   à Paris.pptx4   expositions    à   voir   à Paris.pptx
4 expositions à voir à Paris.pptx
 
Festival de Cannes 2024.pptx
Festival      de      Cannes     2024.pptxFestival      de      Cannes     2024.pptx
Festival de Cannes 2024.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.