Communiquer via Internet

Communiquer via Internet

On s’attend généralement à ce que la plupart des terminaux Android, si ce n’est tous, intè- grent un accès à Internet. Cet accès peut passer par le Wifi, les services de données cellu- laires (EDGE, 3G, etc.) ou, éventuellement, un mécanisme totalement différent. Quoi qu’il en soit, la plupart des gens – en tout cas, ceux qui ont un accès données ou Wifi – peuvent accéder à Internet à partir de leur téléphone Android. Il n’est donc pas étonnant qu’Android offre aux développeurs un large éventail de moyens leur permettant d’exploiter cet accès. Ce dernier peut être de haut niveau, comme le navi- gateur WebKit intégré que nous avons étudié au Chapitre 13. Mais il peut également inter- venir au niveau le plus bas et utiliser des sockets brutes. Entre ces deux extrémités, il existe des API – disponibles sur le terminal ou via des JAR tiers – donnant accès à des protocoles spécifiques comme HTTP, XMPP, SMTP, etc. Ce livre s’intéresse plutôt aux accès de haut niveau comme le composant WebKit et les API Internet car, dans la mesure du possible, les développeurs devraient s’efforcer de réutiliser des composants existants au lieu de créer leurs propres protocoles.

REST et relaxation

Bien qu’Android ne dispose pas d’API cliente pour SOAP ou XML-RPC, il intègre la bibliothèque HttpComponents d’Apache. Vous pouvez donc soit ajouter une couche SOAP/XML-RPC au-dessus de cette bibliothèque, soit l’utiliser directement pour accéder aux services web de type REST. Dans ce livre, nous considérerons les « services web REST » comme de simples requêtes HTTP classiques avec des réponses aux formats XML, JSON, etc. : nous ne présenterons ici que les bases en montrant comment consulter les informations météorologiques.

Opérations HTTP via HttpComponents

Le composant HttpClient de HttpComponents gère pour vous toutes les requêtes HTTP. La première étape pour l’utiliser consiste évidemment à créer un objet. HttpClient étant une interface, vous devrez donc instancier une implémentation de celle-ci, comme DefaultHttpClient. Ces requêtes sont enveloppées dans des instances de HttpRequest, chaque commande HTTP étant gérée par une implémentation différente de cette interface (HttpGet pour les requêtes GET, par exemple). On crée donc une instance d’une implémentation de HttpRe- quest, on construit l’URL à récupérer ainsi que les autres données de configuration (les valeurs des formulaires si l’on effectue une commande POST via HttpPost, par exemple) puis l’on passe la méthode au client pour qu’il effectue la requête HTTP en appelant execute(). Ce qui se passe ensuite peut être très simple ou très compliqué. On peut obtenir un objet HttpResponse enveloppant un code de réponse (200 pour OK, par exemple), des en-têtes HTTP, etc. Mais on peut également utiliser une variante d’execute() qui prend en para- mètre un objet ResponseHandler<String> : cet appel renverra simplement une représen- tation String de la réponse. En pratique, cette approche est déconseillée car il est préférable de vérifier les codes de réponses HTTP pour détecter les erreurs. Cependant, pour les applications triviales comme les exemples de ce livre, la technique Response- Handler<String> convient parfaitement.

Le projet Internet/Weather, par exemple, implémente une activité qui récupère les données météorologiques de votre emplacement actuel à partir du site Google Weather. Ces données sont converties en HTML puis passées à un widget WebKit qui se charge de les afficher. Nous laissons en exercice au lecteur la réécriture de ce programme pour qu’il utilise un ListView. En outre, cet exemple étant relativement long, nous ne présenteronsLa méthode updateForecast() prend un objet Location en paramètre, obtenu via le processus de mise à jour de la localisation. Pour l’instant, il suffit de savoir que Location dispose des méthodes getLatitude() et getLongitude(), qui renvoient, respectivement, la latitude et la longitude. L’URL Google Weather est stockée dans une ressource chaîne à laquelle nous ajoutons en cours d’exécution la latitude et la longitude. Nous construisons un objet HttpGet avec cette URL (l’objet HttpClient a été créé dans onCreate()) puis nous exécutons cette méthode. À partir de la réponse XML, nous construisons la page HTML des prévisions que nous transmettons au widget WebKit. Si l’objet HttpClient échoue avec une exception, nous indiquons l’erreur à l’aide d’un toast.

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *