:: Enseignements :: Licence :: L3 :: 2012-2013 :: Programmation Objet avec Java ::
[LOGO]

HTTP et analyseur syntaxique XML



Exercice 1 - HTTP

Le but de cet exercice est d'obtenir une réponse suite à une requête HTTP.

  1. Utiliser la classe URL pour créer une URL sur la page web suivante: http://api.twitter.com/1/users/show.xml?user_id=125485258.
  2. Ouvrir une connexion et récupérer le flux de sortie (le contenu) de la page Web. Vous afficherez le contenu ligne à ligne.
  3. A quoi sert la méthode close d'un scanner ? Pourquoi cette méthode est-elle importante ?
  4. Rappeler ce qu'est la syntaxe try-with-resources en Java.
    Modifier votre code pour que la connexion soit fermée quoi qu'il arrive.

Exercice 2 - Parseur XML

Le but de cet exercice est d'extraire des informations d'une réponse suite à une requête HTTP. Il existe 3 spécifications permettant l'analyse syntxique XML : SAX, DOM et StaX. Nous utiliserons ici la spécification SAX.

  1. Que représente la classe java.xml.parsers.SAXParserFactory ? Comment créer un objet de ce type ?
  2. A quoi sert la méthode setNamespaceAware() ?
  3. Comment fait-on pour créer un analyseur SAX à partir d'un objet de type SAXParserFactory ?
    Comment doit-on gérer les exceptions ?
  4. A quoi sert la classe org.xml.sax.helpers.DefaultHandler ?
    A quoi servent les méthodes startElement() et endElement() de l'interface org.xml.sax.ContentHandler ?
  5. Ecrire une classe qui hérite de DefaultHandler et redéfinit les méthodes startElement() et endElement() pour afficher les informations obtenues.
  6. Analyser le contenu de la page web http://api.twitter.com/1/users/show.xml?user_id=125485258 à l'aide du DefaultHandler de la question précédente.
  7. Modifier votre DefaultHandler pour créer un objet User contenant uniquement le contenu des balises name, followers_count et protected (typé correctement) et l'utiliser avec l'utilisateur 125485258 ou d'autres utilisateurs.
    Note: voici la description des balises possibles https://dev.twitter.com/docs/api/1/get/users/show.