Vous êtes sur la page 1sur 9

05/04/2020

Département d’Informatique, M02, S3


Cours : Développement Mobile
Accès à une base de données distante

Université Badji Mokhtar Annaba Email: sabri.ghazi@univ-annaba.dz

Accès à une base de données via un


web service
• Comment accéder à une base de données
distante ( se trouve sur un serveur dans le
réseau).
• L’accès directement à la base de données est
déconseillé.
– Solution : Utiliser un web service
– C’est quoi ? : C’est un program qui permet
d’effectuer des traitements et s’exécute dans un
serveur.
sabri.ghazi@univ-annaba.dz 2

1
05/04/2020

Web service
• On peut le considérer comme étant une
fonction qui s’exécute dans le serveur.
• Invoqué par n’importe quel programme
(mobile, desktop ou même un autre web
service).
• Ils sont écrits en un langage web exemple :
PHP.

sabri.ghazi@univ-annaba.dz 3

Schéma d’un accès REST

Appel http
Get/POST
‘URL’

Application
Mobile
Java Serveur Web
Android PHP Base de
http Réponse données
JSON MySQL

sabri.ghazi@univ-annaba.dz 4

2
05/04/2020

Exemple
• On a une base de données qui se trouve dans
un serveur MySQL:

sabri.ghazi@univ-annaba.dz 5

• Cette table contient des informations


concernant les villes algériennes:
– Le nom, le code postal et la population.
• Premièrement on doit écrire un script Php qui
permet de lister les villes et leurs
informations.
• Comme le code suivant :

sabri.ghazi@univ-annaba.dz 6

3
05/04/2020

Le programme AfficherVille.Php qui


permet de transformer les données

sabri.ghazi@univ-annaba.dz 7

Le programme AfficherVille.Php qui


permet de transformer les données
• Si on lance la requête http dans notre navigateur web
• http://localhost/AfficherVilles.php
• On obtient le résultat en format JSON

[{"nom":"Annaba","codepostal":"23","population":"40000"},
{"nom":"Alger","codepostal":"16","population":"3000000"},
{"nom":"Guelma","codepostal":"24","population":"300000"},
{"nom":"Taref","codepostal":"36","population":"250000"}]

sabri.ghazi@univ-annaba.dz 8

4
05/04/2020

Dans notre application


• On cherche
– À lancer une requête http, pour lancer le web service.
– Récupérer le résultat.
– Affiche ce résultat dans l’interface utilisateur.
• On aura besoin de
– Donner les permissions a l’application pour se
connecter.
– 1 une classe Ville.java (contenant les attributs de
même nom et type que la table de base de données).
– 2 écriture du programme qui lance la requête.
sabri.ghazi@univ-annaba.dz 9

Donner les permissions


• Il faut modifier le fichier Manifest.xml de
l’application afin qu’elle puisse se connecter à
une machine distante.
• Si non :java.lang.SecurityException:
Permission denied (missing INTERNET
permission?)

sabri.ghazi@univ-annaba.dz 10

5
05/04/2020

Ville.java

sabri.ghazi@univ-annaba.dz 11

Remarque
• L’URL http://localhost/AfficherVilles.php
• Dans l’émulateur elle devient
– http://10.0.2.2/AfficherVilles.php
– L’émulateur peut communiquer avec la machine
de développement en utilisant cette adresse.

sabri.ghazi@univ-annaba.dz 12

6
05/04/2020

Dans notre application android


• On doit développer la classe qui permet de
récupérer les résultats d’un web service.
• Cette classe doit hériter la classe AsyncTask.
• L’invocation et la récupération des résultats
d’un web service se fait en arrière plan, c’est à
dire sans bloquer le Thread principal (Celui de
l’interface utilisateur.

sabri.ghazi@univ-annaba.dz 13

La classe AsyncTask
• Elle permet de lancer des traitements
asynchrone , c’est-à-dire dans un Thread autre
que le Thread principal.
• Elle possède la méthode doInBackground qui
fait le traitement en arrière plan.
• Est une méthode onPostExecute qui s’exécute
après la fin du traitement. Elle est utilisé par
récupérer le résultat.

sabri.ghazi@univ-annaba.dz 14

7
05/04/2020

La classe ListerVillesFromWebService

sabri.ghazi@univ-annaba.dz 15

sabri.ghazi@univ-annaba.dz 16

8
05/04/2020

sabri.ghazi@univ-annaba.dz 17

Dans l’activité
• On doit instancier la classe et lancer le
traitement par l’appel de la méthode execute.

sabri.ghazi@univ-annaba.dz 18

Vous aimerez peut-être aussi