Chapitre 06. Internet



Documents pareils
L3 informatique TP n o 2 : Les applications réseau

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Programmation Web. Madalina Croitoru IUT Montpellier

Application Web et J2EE

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Architecture Orientée Service, JSON et API REST

Programmation Internet en Java

Développement des Systèmes d Information

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Service de certificat

Cours CCNA 1. Exercices

Architectures web/bases de données

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

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

Guide d utilisation. Version 1.1

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

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Le stockage local de données en HTML5

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

OCLOUD BACKUP GUIDE DE REFERENCE POUR ANDROID

Introduction à HTTP. Chapitre HTTP 0.9

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

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

Web Tier : déploiement de servlets

Plateforme PAYZEN. Définition de Web-services

La base de données XML exist. A. Belaïd

PARAMETRER INTERNET EXPLORER 9

Java DataBaseConnectivity

TP2 : Client d une BDD SqlServer

Programmer en JAVA. par Tama

Réglages du portail de P&WC

Premiers Pas en Programmation Objet : les Classes et les Objets

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Projet de programmation (IK3) : TP n 1 Correction

Editer un script de configuration automatique du proxy

TP JAVASCRIPT OMI4 TP5 SRC

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

RMI le langage Java XII-1 JMF

Android UIThread, Thread, Handler et AsyncTask

Surveiller sa maison via son Smartphone sous Android

Définition des Webservices Ordre de paiement par . Version 1.0

1. Mise en œuvre du Cegid Web Access Server en https

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Introduction aux «Services Web»

Paginer les données côté serveur, mettre en cache côté client

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

OpenPaaS Le réseau social d'entreprise

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Gestion distribuée (par sockets) de banque en Java

Création d un service web avec NetBeans 5.5 et SJAS 9

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Gestion de stock pour un magasin

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Remote Method Invocation (RMI)

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Java Licence Professionnelle CISII,

Corrigé des exercices sur les références

TAGREROUT Seyf Allah TMRIM

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Dis papa, c est quoi un bus logiciel réparti?

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

18 TCP Les protocoles de domaines d applications

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

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

1. Installation du Module

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Atelier Le gestionnaire de fichier

Alfstore workflow framework Spécification technique

SECURIDAY 2013 Cyber War

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

TUTORIAL ULTRAVNC (EDITION 2)

Aspects techniques : guide d interfaçage SSO

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

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

Les différentes méthodes pour se connecter

Introduction à. Oracle Application Express

Manuel d'installation

Table des matières Hakim Benameurlaine 1

Dans l'article précédent, vous avez appris

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

< Atelier 1 /> Démarrer une application web

(structure des entêtes)

Introduction à JDBC. Accès aux bases de données en Java

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Java et les bases de données

contact@nqicorp.com - Web :

Transcription:

Chapitre 6: Internet 99 Chapitre 06 Internet Chapitre 6: Internet 100 Accès à l internet - Il faut ajouter dans le fichier «AndroidManifest.xml» les autorisations nécessaires pour permettre l accès à l internet, comme suit : <uses-permission android:name="android.permission.internet"/> public static final String INTERNET Added in API level 1 Allows applications to open network sockets. Constant Value: "android.permission.internet" - Si nous voulons vérifier l état de la connexion à internet, il est nécessaire d autoriser cette action dans le fichier «AndroidManifest.xml» comme suit : <uses-permission android:name="android.permission.access_network_state"/> public static final String ACCESS_NETWORK_STATE Added in API level 1 Allows applications to access information about networks Constant Value: "android.permission.access_network_state"

Chapitre 6: Internet 101 - Vérifier l état de la connexion : On commence par récupérer le service «CONNECTIVITY_SERVICE», responsable de la connectivité réseau de notre appareil, à travers une instance du type «ConnectivityManager» : ConnectivityManager connmgr = (ConnectivityManager) getsystemservice(context.connectivity_service); Pour cette instance, nous récupérons des informations sur l état d activité du réseau. NetworkInfo networkinfo = connmgr.getactivenetworkinfo(); Chapitre 6: Internet 102 Nous testons 3 éléments : - Networkinfo: est-ce que l instance du type «NetworkInfo» existe? - isavailable : est-ce que la connectivité au réseau est possible? (Le mode avion est actif?) - isconnected: indique si la connexion à un réseau est possible, qu il est possible d établir une connexion et transmettre des données. if (networkinfo!= null && networkinfo.isavailable() && networkinfo.isconnected()) Utiliser le programme «TestInternet», et effectuer les tests en appuyant sur la touche «F8» pour activer ou désactiver le réseau.

Chapitre 6: Internet 103 Afficher des pages web - On peut utiliser un TextView (voir l exemple «StringsDemo», chapitre 4) pour afficher une page «html». Or cette page est bien limitée, vu qu il n est pas possible d afficher une image. - Android offre un mécanisme permettant d afficher une page html dans une activité. On utilise pour cela une vue du type WebView. - Commencer par ajouter une telle vue dans le fichier «XML» associé à votre activité : <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> Chapitre 6: Internet 104 - Par la suite, on récupère la vue dans le code Java et on charge la page web en question : webview.loadurl("http://www.iro.umontreal.ca/~dift1155"); - Il faudra la permission permettant à l activité de se connecter à l internet : <uses-permission android:name="android.permission.internet" /> Faire le test avec et sans les permissions. - Si on veut activer JavaScript dans la vue : webview.getsettings().setjavascriptenabled(true);

Chapitre 6: Internet 105 - Gestion des liens dans une page web Quand vous cliquez un lien, Android lance le navigateur approprié pour afficher la page en question. Vous pouvez modifier ce comportement et permettre à votre activité (webview) de gérer ce type d affichage. webview.setwebviewclient(new mywebviewclient()); private class mywebviewclient extends WebViewClient { @Override public boolean shouldoverrideurlloading(webview view, String url) { view.loadurl(url); return true; Chapitre 6: Internet 106 - On peut aussi gérer le comportement du bouton retour associé à un navigateur afin de revenir à la page web visualisée précédemment, comme suit : @Override public boolean onkeydown(int keycode, KeyEvent event) { if ((keycode == KeyEvent.KEYCODE_BACK) && webview.cangoback()) { webview.goback(); // voir les différentes possibilités return true; return super.onkeydown(keycode, event); Utiliser le programme «TestWebView».

Chapitre 6: Internet 107 Fabriquer une page localement - On peut fabriquer la page à afficher et la charger par la suite dans une instance de «WebView» avec la commande «loaddata» comme suit : webview.loaddata(contenu,typemime,encodage); Les arguments de la méthode «loaddata» sont du type «string» : - «Contenu» : représente le code html de la page web à afficher. - «Typemime» : le format des données reliées à la page, dans notre exemple nous allons utilisons le format «text/html». La liste est disponible ici : http://www.iana.org/assignments/media-types http://fr.wikipedia.org/wiki/type_mime Chapitre 6: Internet 108 - «Encodage» : est l encodage des caractères dans la page web en question, nous allons utiliser «UTF-8». La liste complète est disponible ici : http://fr.wikipedia.org/wiki/codage_de_caract%c3%a8res Utiliser le programme «TestWebViewLoadData».

Chapitre 6: Internet 109 Requête http - Une application web est constituée de 2 niveaux, le client émettant une requête et le serveur traitant cette requête. Chapitre 6: Internet 110 (1) Un serveur web soumet une forme d un document à compléter (une requête), (2) Le client complète la forme et la retourne au serveur, (3) Le serveur la réceptionne et la redirige vers le script qu il l a invoquée dans la page html. En exécutant cette requête, le programme peut communiquer avec une ou plusieurs bases de données si nécessaire. Ainsi donc, le programme analyse les données soumises, peut éventuellement sauvegarder celles-ci ou collecter d'autres pour construire dynamiquement une page HTML. (4) Ces programmes retournent les résultats au serveur qu il se charge de les transmettre au client. Le client peut utiliser : - un formulaire HTML, permettant de saisir les champs ou bien il peut y avoir validation via des scripts (JavaScript) ; - des applets et communiquer avec le serveur via des sockets/rmi.

Chapitre 6: Internet 111 Les requêtes http vers le serveur contiennent : - l url de la ressource à accéder, - la requête GET pour extraire des informations sur le serveur, - la requête POST pour modifier les données sur le serveur. Le serveur identifie avec la requête le type d environnement d exploitation à charger en fonction de : - l extension du fichier (.cgi,.jsp, etc.) ou - le répertoire où il se trouve (cgi-bin/, servlet/, etc.). Chapitre 6: Internet 112 Le serveur charge par la suite l environnement d exécution (servlets), etc. Perl (cgi-perl), JVM Le script ou programme précise le type du contenu (HTML, images, etc.) et intègre la réponse dans un flot associé à la sortie. Le navigateur définit le type MIME (l encodage utilisé pour le transfert de documents multimédias à travers le réseau) text/html audio/basic image/gif etc. et affiche les données en fonction.

Chapitre 6: Internet 113 Clients HTTP - Android inclut deux clients http : «HttpURLConnection» natif du langage Java et «HttpClient» d Apache. Il est conseillé par «Android» d utiliser le client «HttpURLConnection» pour les applications qui ciblent la version Gingerbread et plus, car ce client est constamment maintenu par «Android» : http://android-developers.blogspot.ca/2011/09/androids-http-clients.html HttpURLConnection - Origine : Java, du paquetage «java.net. HttpURLConnection». Création d une instance «url» en lui communiquant l adresse «urlstr» que nous désirons communiquer avec : URL url = new URL(urlStr); Chapitre 6: Internet 114 Établir une connexion à partir de l instance url. URLConnection urlconn = url.openconnection(); On s assurer qu il s agit du bon protocole, http, et non pas ftp, file (fichier), etc. if (!(urlconn instanceof HttpURLConnection)) { throw new IOException ("URL is not an Http URL"); Si c est OK, on passe à l étape de configuration de la connexion: HttpURLConnection httpconn = (HttpURLConnection)urlConn;

Chapitre 6: Internet 115 Est-ce que l application peut demander une information supplémentaire, «false» pour une réponse négative. À noter que cette option n est pas utilisée sous Android. httpconn.setallowuserinteraction(false); L'adresse «url» du site web du cours IFT1155, www.iro.umontreal.ca/~dift1155, renvoie vers la session en cours. Pour valider ce renvoi d url, il faut utiliser : httpconn.setinstancefollowredirects(true); Nous allons chercher de l information, sinon il fallait utiliser «POST» (pour poster l information): httpconn.setrequestmethod("get"); Chapitre 6: Internet 116 On établit une connexion: httpconn.connect(); On examine par la suite la réponse transmise par le serveur rescode = httpconn.getresponsecode(); if (rescode == HttpURLConnection.HTTP_OK) { in = httpconn.getinputstream(); Plusieurs codes sont possibles : http://developer.android.com/reference/java/net/httpurlconnection.html http://fr.wikipedia.org/wiki/liste_des_codes_http HTTP_OK: Requête traitée avec succès»

Chapitre 6: Internet 117 Ayant obtenu les accès nécessaires à l url et attaché un flux à cette connexion, nous allons lire les données (l opération «GET»). Pour cela, il est nécessaire d utiliser les threads pour éviter un «ANR» ou bien d aller modifier le thread «UI», voir le chapitre «05, les threads». L exemple «HttpURLConnectionA» explique montre à travers deux exemples, comment télécharger un texte et une image. Nous avons utilisé 2 boutons pour démarrer indépendamment le téléchargement du texte et de l image. Pour chacun de ces téléchargements, nous avons ajouté une barre de progression afin d informer l utilisateur de l état du téléchargement. Dans les deux cas de figure, nous avons utilisé des threads pour réaliser ces opérations. Le handler s est chargé par la suite pour communiquer avec les threads afin de mettre à jour l information sur le thread «UI». Pour cela, il a utilisé un système de messagerie pour pouvoir communiquer sans problème avec les différents threads. Chapitre 6: Internet 118 Image : Message msg = Message.obtain(); msg.what = 1; Bundle b = new Bundle(); b.putparcelable("bitmap", bitmap); msg.setdata(b); messagehandler.sendmessage(msg); Texte: Message msg = Message.obtain(); msg.what=2; Bundle b = new Bundle(); b.putstring("text", text); msg.setdata(b); messagehandler.sendmessage(msg);

Chapitre 6: Internet 119 switch (msg.what) { case 1: ImageView img = (ImageView) findviewbyid(r.id.imageview01); img.setimagebitmap((bitmap)(msg.getdata().getparcelable("bitmap"))); break; case 2: TextView text = (TextView) findviewbyid(r.id.textview01); text.settext(msg.getdata().getstring("text")); break; Chapitre 6: Internet 120 HttpClient C est un client natif à Apache. Définir un client : HttpClient client = new DefaultHttpClient(); Définir la requête avec l adresse url à télécharger : HttpGet request = new HttpGet(urlStr); Exécuter la requête et récupérer la réponse : HttpResponse response = client.execute(request);

Chapitre 6: Internet 121 On peut tester l état de la réponse: final int statuscode = response.getstatusline().getstatuscode(); if (statuscode!= HttpStatus.SC_OK) { Log.w("ImageDownloader", "Error " + statuscode + " while retrieving data from " + urlstr); return null; in = response.getentity().getcontent(); Examiner l exemple «HttpClientApacheProject». Pour les codes de «HttpStatus» : http://developer.android.com/reference/org/apache/http/httpstatus.html Chapitre 6: Internet 122 Socket - Les sockets permettent de faire communiquer un processus avec un service qui gère un réseau. - Un socket est constitué d une adresse IP et d un numéro de port. - Le modèle de communication est défini par programmation (TCP, UDP, Etc.). - Créer un socket : Socket client = new Socket(nom_host,post_host); - On peut envoyer des données via le socket: PrintWriter out = new PrintWriter(client.getOutputStream());

Chapitre 6: Internet 123 - On peut lire des données envoyées via le socket BufferedReader in = new BufferedReader( new InputStreamReader(incoming.getInputStream())); - Ne pas oublier de fermer le socket. Examiner l exemple client-serveur «AndyChat». Chapitre 6: Internet 124 JavaScript - En activant JavaScript, vous permettez au webview d afficher correctement les pages web réalisées en partie avec un tel langage. - Il est possible de réaliser des interfaces qui échangeraient des données entre l application Android et des pages web contenant du code JavaScript et hébergées localement. HTML/JavaScript - L exemple «10-1B-WebView-Local-Html» contient une page html locale et une application Android. - L application télécharge la page html et attend que l utilisateur interagisse avec elle. Pour chaque clique sur le bouton, elle va afficher un «toast».

Chapitre 6: Internet 125 - Le répertoire «assets» contient des données qui seront incluses avec l application. On peut stocker dans ce répertoire des fichiers audio, vidéo, description de l application, etc. Pour notre exemple, nous allons inclure dans ce répertoire le fichier html «my_local_webpage1.html». Cette page contient ce qui suit : <html> <input type="button" value="say hello" onclick="showandroidtoast('hello Android!')" /> <script type="text/javascript"> function showandroidtoast(toast) { AndroidInterface.showToast(toast); </script> </html> La page déclare un bouton et l action associée, lors d un clic sur ce bouton. Chapitre 6: Internet 126 L application Android définit le WebView qui doit héberger la page html : <WebView android:id="@+id/webview1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignparentleft="true" /> Un objet interface est attaché au WebView. Il va permettre la communication entre l application Android et à la page html : browser.addjavascriptinterface( new JavaScriptInterface(this), "AndroidInterface"); On charge la page dans la WebView : browser.loadurl("file:///android_asset/my_local_webpage1.html");

Chapitre 6: Internet 127 La méthode «showtoast» sera par la suite invoquée par la méthode «onclick» définie dans le JavaScript associée à la page html. Le même évènement va permettre de récupérer l argument transmis à la méthode «showtoast». public void showtoast(string toast) { Toast.makeText(mContext, toast,toast.length_short).show(); Fonctionnement : quand vous cliquez sur le bouton «Say hello», ce dernier va faire appel à la méthode «showandroidtoast» avec l argument «Hello Android!». Cette méthode va utiliser l objet interface «AndroidInterface», qui sert à communiquer entre la page html et l application Android. Cet objet est lié à une instance «JavaScriptInterface». Il peut donc accéder aux méthodes de cette classe. Il va donc faire appel «showtoast(toast)» en lui passant comme argument «Hello Android!». Cette méthode va avoir la charge par la suite d afficher la chaîne en question. Cet exemple à montrer comment interconnecter une application Android et un programme écrit en JavaScript. Chapitre 6: Internet 128 - Examiner les exemples «10-2-WebView-PassingObject-JS», «10-3-WebView- GoogleMapV3-Fixed-Location» et «10-4-WebView-GoogleMapV3- CurrentLocation». JSON (JavaScript Object Notation) - JSON est un format léger d'échange de données. - JSON est indépendant de tout langage, facile à apprendre, car sa syntaxe est réduite et non extensible. - JSON est plus performant que XML, vu que son format est plus allégé et compact. Du coup, il s y prête mieux à des applications Android vu les limites techniques des appareils. - Android contient un paquetage JSON responsable de traiter des éléments JSON.

Chapitre 6: Internet 129 1 2 3 4 5 6 7 8 9 10 11 12 XML <employes> <employe> <nom> Eric Schmidt </nom> <sexe>homme</sexe> </employe> <employee> <nom> Marissa Mayer </nom> <sexe>femme</sexe> </employee> </employes> { JSON "employes": [ { "nom": " Eric Schmidt ", "sexe": "homme", { "nom": " Marissa Mayer ", "sexe": "femme" ] Structure d un document JSON - 2 structures d éléments : paires «nom, valeur» (non ordonnées) et des listes de valeurs (ordonnées) - Les éléments peuvent être des objets, des tableaux, des nombres, des chaînes de caractères, etc. Chapitre 6: Internet 130

Chapitre 6: Internet 131 Chapitre 6: Internet 132 Les images ainsi que l exemple : http://upadhyayjiteshandroid.blogspot.ca/2013/02/android-json-parsing-example.html Faire d abord l exemple «Json Example», puis «Android Json Parser».

Chapitre 6: Internet 133 Bibliographies Building Apps with Connectivity & the Cloud http://developer.android.com/training/building-connectivity.html Android The WebKit Browser http://grail.cba.csuohio.edu/~matos/notes/cis-493/lecture-notes/android-chapter10- WebKit.pdf Android Networking II http://courses.coreservlets.com/course-materials/pdf/android/android-networking-2.pdf Voir l'exemple [Google Translation Services] Optimizing Battery Life http://developer.android.com/training/monitoring-device-state/index.html Chapitre 6: Internet 134 Building Web Apps in WebView http://developer.android.com/guide/webapps/webview.html 23.0 HTTP Connection http://www.bogotobogo.com/android/android23http.php Chapitre 22: La connectivité réseau http://www.siteduzero.com/informatique/tutoriels/creez-des-applications-pour-android/laconnectivite-reseau