Android Interroger un Web Service Json



Documents pareils
21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Architecture Orientée Service, JSON et API REST

Paris Airports - Web API Airports Path finding

Devenez un véritable développeur web en 3 mois!

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

PHP. PHP et bases de données

PHP 5. La base de données MySql. A. Belaïd 1

4. SERVICES WEB REST 46

CREATION WEB DYNAMIQUE

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

TP2 : Client d une BDD SqlServer

Introduction à ElasticSearch

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Projet de programmation (IK3) : TP n 1 Correction

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Stockage du fichier dans une table mysql:

Programmation Web. Introduction

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Information utiles. webpage : Google+ : digiusto/

Jean-Philippe Paquette

Android UIThread, Thread, Handler et AsyncTask

Cours 1: Java et les objets

TP, première séquence d exercices.

Module http MMS AllMySMS.com Manuel d intégration

INITIATION AU LANGAGE JAVA

LAMP : une nouvelle infrastructure LAMP. Une architecture modulaire. Installation

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

OpenPaaS Le réseau social d'entreprise

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Chapitre VI- La validation de la composition.

Diagramme de déploiement

Mise en œuvre des serveurs d application

Java DataBaseConnectivity

Cours: Administration d'une Base de Données

Formation : WEbMaster

Web Tier : déploiement de servlets

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Bases Java - Eclipse / Netbeans

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Une introduction à la technologie EJB (2/3)

Messagerie asynchrone et Services Web

Tutorial pour une application simple

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Premiers Pas en Programmation Objet : les Classes et les Objets

Surveiller sa maison via son Smartphone sous Android

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Gestion d identités PSL Exploitation IdP Authentic

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Programmation Web. Madalina Croitoru IUT Montpellier

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Architectures Web Services RESTful

Bases de données documentaires et distribuées Cours NFE04

Aménagements technologiques


Un ordonnanceur stupide

Hébergement de site web Damien Nouvel

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Approche Contract First

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

MailStore Server 7 Caractéristiques techniques

Programmation système I Les entrées/sorties

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

TP SIN Programmation sur androïde Support : eclipse

Console IAP Manuel d utilisation

Android 4 Les fondamentaux du développement d'applications Java

Référentiel ISVD Prévisionnel

les techniques d'extraction, les formulaires et intégration dans un site WEB

Formation Webmaster : Création de site Web Initiation + Approfondissement

Remote Method Invocation (RMI)

L exclusion mutuelle distribuée

Pratique et administration des systèmes

Développement d'un logiciel VoIP BlackBerry

Héritage presque multiple en Java (1/2)

PG208, Projet n 3 : Serveur HTTP évolué

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Les connexions sans fil avec Android. JMF (Tous droits réservés) 1

Raspberry pi : Développer une petite application web sur Raspberry

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

ALOHA LOAD BALANCER METHODE DE CONTROLE DE VITALITE

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

TD/TP 1 Introduction au SDK d Android

Application web de gestion de comptes en banques

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Synchro et Threads Java TM

DESCRIPTION DU PLUGIN D AUTHENTIFICATION AVEC CAS POUR SPIP

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

3 Octobre Les Communautés MS

Mobyt Intégration par Webservice TABLE DES MATIERES

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Transcription:

Android Interroger un Web Service Json Contenu Contexte... 2 La base MYSQL... 2 La ressource PHP (web service)... 2 La classe métier associée... 2 Interroger le web service... 3 Requête http... 3 Communication entre les 2 objets... 3 Que fait le run?... 3 Que contient la réponse http?... 4 L Activity principale... 4 Le constructeur... 4 La création de l Handler... 5 Transformation Des trucs... 5 Construire un Truc à partir d un JSONObject... 6 Résultats... 6

Contexte Nous allons voir ici comment récupérer des données contenues dans une base de données intranet par le biais d un service web accessible d Internet. Les informations transiteront sous forme d objets JSON, facilement manipulable par le langage Php et les terminaux mobiles Android. La base MYSQL La base de données interne contient une table «truc». Cette table est constituée de 3 champs : Id : un identifiant clé primaire de la table (int) Lib : un libellé quelconque (varchar(45)) Val : une valeur quelconque (int) La ressource PHP (web service) Elle est à l adresse suivante : http://sio.jbdelasalle.com:10380/~mtest/ws.php Elle crée une instance d un objet PDO afin d interroger la base Mysql si besoin. Selon la valeur de la variable (en GET) «requete», elle va interroger la bd et retourner le résultat encode en JSON. http://sio.jbdelasalle.com:10380/~mtest/ws.php?requete=getlestrucs Renvoie : C est l encodage JSON du contenu de la table «truc» : (Select * from truc) La classe métier associée Du côté de notre client Android, il semble plus pratique de créer l équivalent de notre table truc. Soit la classe Truc : Cette classe contient un constructeur standard, les getters, est une surcharge de tostring nécessaire à l affichage dans un listview par exemple. Elle contient également une méthode trucfactory statique, qui prend en paramètre un objet JSONObject.

Interroger le web service Requête http Une reqûete http met un certain temps à s exécuter. L application de doit pas être «bloqué» le temps que la requête ne récupère le résultat demandé. Pour cela, la requête http doit s exécuter dans un Thread différent du Thread principal de l application. La classe qui va gérer l exécution de la requête doit donc implémenter l interface Thread, afin d être exécutée en parallèle. Communication entre les 2 objets Comment la classe Threadé va prévenir le programme principal que la requête est terminée? Il faut un objet connu par le Thread principal ET le Thread de la requête. C est excatement le travail d un objet Handler. A la construction de l objet Threadé, on lui passe la référence de l objet appelant afin que l objet Threadé puisse prévenir l Objet du Thread principal quand le travail sera terminé. Que fait le run? C est lui qui «exécute» réellement la requête (ici GET). Il récupère le résultat de la requête dans un objet HttpResponse qui contient la chaîne de caractère attendue. Une fois récupéré, il peut interpréter son contenu (un/des objets JSON) grâce à la méthode «lirereponse» et prévenir le Thread principal par le biais de l Handler que le travail est fini et qu il peut venir récupérer le résultat quand il le souhaite.

Que contient la réponse http? Elle contient le flux de données envoyées par le serveur web. Afin de pouvoir manipuler plus facilement ce flux, il suffit de lire les octets 1 à 1 afin de reconstituer un String grâce au StringBuilder. L objet Threadé contient donc maintenant le String, réponse de la requête et a prévenu le Thread principal en lui envoyant un message contenant la valeur 0. L Activity principale Par le biais de son Handler qu elle est elle-même créé avant de transmettre sa référence à l objet chargé d effectuer la requête, elle reçoit un message lui confirmant l arrivée de la réponse http. Afin de faire patienter l utilisateur, il est habituel d afficher des Progress Bar ou Dialog. Le constructeur Il doit préparer la ProgressDialog, créer l Handler, créer et démarrer la Thread de requête en lui donnant la référence à l Handler.

La création de l Handler Il va tout d abord stopper la ProgressDialog afin de rendre la main à l utilisateur, puis travailler sur la chaîne de caractère récupérée de la requête. Que va faire mon objet quand il va recevoir le message? Transformation Des trucs La réponse de la requête peut-être maintenant traitée. Le constructeur de JSONArray va nous permettre de transformer la chaîne de caractères (réponse de la requête) en tableau de JSONObjet. Puis, grâce à la méthode statique trucfactory de la classe Truc, nous allons pouvoir générer nos objets Truc afin de les stocker dans un ArrayList. L ArrayList n a plus qu à être chargé dans un ListView par exemple.

Construire un Truc à partir d un JSONObject Le travail est similaire à la récupération de données provenant d une base de données. Nous récupérons, champ par champ le résultat d une ligne, afin de les transmettre au constructeur et de les renvoyer au programme appelant. L intérêt principal de rendre cette méthode statique est qu il n y a pas besoin d instancier un objet Truc au préalable. Résultats