You are on page 1of 7

Accder aux services Web via Android

Par Acesyde

Date de publication : 23 novembre 2012

Dernire mise jour : 13 janvier 2013

Ce tutoriel a pour but de vous prsenter l'utilisation des services Web sous Android.
Accder aux services Web via Android par Acesyde

1 - Les services Web.................................................................................................................................................. 3


2 - Le service Web de Test.........................................................................................................................................3
3 - Structure de notre application................................................................................................................................3
4 - Appel au service Web............................................................................................................................................4
5 - Conclusion..............................................................................................................................................................6
6 - Annexes..................................................................................................................................................................6
7 - Remerciements...................................................................................................................................................... 6
8 - Liens....................................................................................................................................................................... 7

-2-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par
les droits d'auteur. Copyright 2012 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette
page est dpose la SACD.
http://Acesyde.developpez.com/tutoriels/android/web-services-android/
Accder aux services Web via Android par Acesyde

1 - Les services Web

Les services Web sont des services de traitement de la donne expose sur internet. Ils peuvent avoir plusieurs
formes, provenir de plusieurs sites diffrents, faire des tches diverses et tre privs ou publics.

Exemples :

donnes mtorologiques ;
calcul mathmatique ;
stockage d'informations ;
etc.

Les services Web peuvent tre cods en plusieurs langages (C#, Java, PHP, Ruby, Python, C, etc.).

Nous allons nous intresser plus prcisment aux services retournant des donnes en JSON (JavaScript Object
Notation).

Pourquoi le JSON ? Eh bien pour une question de facilit, bien entendu vous pouvez utiliser le XML aussi, mais le
JSON a la particularit d'tre plus lger que XML, un gain de poids n'est pas anodin dans le domaine de la mobilit.

2 - Le service Web de Test

Vous trouverez ce lien le service Web de test que nous utiliserons par la suite :

Ce service est dvelopp en .NET sous forme de Web API.

Cette URL retourne une liste de points gographiques comportant les lments suivants :

Adress : adresse du lieu ;


City : ville ;
PostalCode : code postal ;
Latitude : latitude ;
Longitude : longitude.

3 - Structure de notre application

Notre application va tre structure de la manire suivante :

vue (XML) ;
ListView ;
ArrayAdapter ;
client pour le service Web ;
modle de donnes.

Nous allons aussi utiliser la bibliothque GSON, qui permet de srialiser/dsrialiser en JSON, inutile de rinventer
la roue.

Vous trouverez ce lien le projet de la librairie GSON :

-3-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par
les droits d'auteur. Copyright 2012 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette
page est dpose la SACD.
http://Acesyde.developpez.com/tutoriels/android/web-services-android/
Accder aux services Web via Android par Acesyde

4 - Appel au service Web

Nous allons crer une classe pour effectuer nos appels.

Exemple : WebService.java

Nous retrouverons les lments suivants dans notre classe :

la base de l'URL pour le service Web ;


l'objet Gson ;
un constructeur ;
une mthode private pour se connecter en HTTP au service Web et rcuprer un InputStream ;
des mthodes pour chaque API disponible.

public class WebService {

private final String URL = "http://testwebapi.lalimace.fr/api/Point";

Gson gson;

public WebService() {
gson = new Gson();
}

private InputStream sendRequest(URL url) throws Exception {

try {
// Ouverture de la connexion
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

// Connexion l'URL
urlConnection.connect();

// Si le serveur nous rpond avec un code OK


if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
return urlConnection.getInputStream();
}
} catch (Exception e) {
throw new Exception("");
}
return null;
}

public List<Point> getPoints() {

try {
// Envoi de la requte
InputStream inputStream = sendRequest(new URL(URL));

// Vrification de l'inputStream
if(inputStream != null) {
// Lecture de l'inputStream dans un reader
InputStreamReader reader = new InputStreamReader(inputStream);

// Retourne la liste dsrialise par le moteur GSON


return gson.fromJson(reader, new TypeToken<List<Point>>(){}.getType());
}

} catch (Exception e) {
Log.e("WebService", "Impossible de rapatrier les donnes :(");
}
return null;
}
}

-4-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par
les droits d'auteur. Copyright 2012 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette
page est dpose la SACD.
http://Acesyde.developpez.com/tutoriels/android/web-services-android/
Accder aux services Web via Android par Acesyde

sendRequest sera notre mthode gnrique pour appeler via un objet HttpUrlConnection le service Web, ici on se
contente de faire un simple appel de type GET sur une URL.

Le rsultat retourn est toujours un InputStream que nous allons pouvoir traiter, nous pouvons avoir plusieurs types
de donnes retournes par un service Web (XML, JSON, Image, Excel, etc.).
Le type InputStream est facilement manipulable avec le Reader qui va bien.

Notre cas se porte uniquement sur le JSON.

Nous avons aussi besoin d'un modle, le flux tant de type JSON il faut dsrialiser celui-ci pour le transformer en
un objet exploitable facilement.

Nous allons donc crer un fichier Point.java, lequel contiendra les informations suivantes :

les proprits ;
les accesseurs.

Vous pouvez aussi rajouter vos propres mthodes, comme toString etc.

Voici le code :

package com.aceart.formationwebservice.model;

public class Point {


int ID;
String Address;
String City;
String PostalCode;
float Latitude;
float Longitude;

public int getID() {


return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
public String getCity() {
return City;
}
public void setCity(String city) {
City = city;
}
public String getPostalCode() {
return PostalCode;
}
public void setPostalCode(String postalCode) {
PostalCode = postalCode;
}
public float getLatitude() {
return Latitude;
}
public void setLatitude(float latitude) {
Latitude = latitude;
}
public float getLongitude() {
return Longitude;
}
public void setLongitude(float longitude) {

-5-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par
les droits d'auteur. Copyright 2012 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette
page est dpose la SACD.
http://Acesyde.developpez.com/tutoriels/android/web-services-android/
Accder aux services Web via Android par Acesyde

Longitude = longitude;
}
}

Avec la bibliothque GSON tout se fait en une ligne pour transformer l'inputStream en Objet.

return gson.fromJson(reader, new TypeToken<List<Point>>(){}.getType());

partir de l vous obtenez donc une liste d'objets provenant d'un service Web retournant du JSON.

5 - Conclusion

Vous trouverez les sources de la dmo en bas de l'article, contenant la partie affichage avec l'ArrayAdapter et la
ListView, je ne vais pas m'attarder sur ces deux points car nous les avons dj vus dans d'autres cours.

Dans un prochain tutoriel nous aborderons l'utilisation du Spring Framework qui permet d'utiliser des services Web
de type REST facilement.

6 - Annexes

Source :

7 - Remerciements

Je tiens remercier tout particulirement Feanorin qui a mis ce tutoriel au format Developpez.com.
Merci galement zoom61 et ClaudeLELOUP d'avoir pris le temps de le relire et de le corriger.

-6-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par
les droits d'auteur. Copyright 2012 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette
page est dpose la SACD.
http://Acesyde.developpez.com/tutoriels/android/web-services-android/
Accder aux services Web via Android par Acesyde

8 - Liens

-7-
Les sources prsentes sur cette page sont libres de droits et vous pouvez les utiliser votre convenance. Par contre, la page de prsentation constitue une uvre intellectuelle protge par
les droits d'auteur. Copyright 2012 Developpez LLC. Tous droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette
page est dpose la SACD.
http://Acesyde.developpez.com/tutoriels/android/web-services-android/

You might also like