IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

SAXBuilder erreur 503


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut SAXBuilder erreur 503
    Bonjour,
    Pour un projet personnel je dois coder un programme qui récupère une page d'un site web par une requete HTTP puis qui convertis le String de la réponse en XML.
    Pour la conversion j'utilise SAXBuilder.
    Voici le code en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	        try
    	        {
    	            InputStream is = urlConnection.getInputStream();
    	            SAXBuilder parser = new SAXBuilder();
    	            Document responseXML = parser.build(is)
    	        }
    	        catch(Exception e)
    	        {
    	            System.out.println(e);
    	        }
    Cependant ce code me soulève une exception lors de l'appel a build().
    Voici l'exeption:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
    	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:865)
    	at ParDate.readResponse(ParDate.java:112)
    	at ParDate.marketer(ParDate.java:28)
    	at MarketBot.lancerBot(MarketBot.java:13)
    	at MarketBot.main(MarketBot.java:19)
    J'ai beau chercher sur le net je ne comprend pas du tous ou j'ai fait une erreur.
    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Par défaut
    Tu ne fais pas d'erreur à priori (mais je ne connais pas bien sax) par contre l'url que tu interroge pour contruire ton inputStream te renvoi une erreur HTML :
    503 : Service Unavailable : Service temporairement indisponible ou en maintenance
    C'est donc à la source de l'inputSream que se trouve l'erreur.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut
    Je te remercie pour ta réponse.
    Je ne pense pas que le problème vienne de ma requete http puisque si je n'utilise pas Sax je peut afficher la reponse sous forme de String.
    Cette erreur survient seulement quant j'essaye de parser avec Sax.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Le problème est le suivant :
    - Comme beaucoup de pages HTML, la page que tu lis contient un DOCTYPE, qui indique la DTD utilisée pour cette page.
    - Ton parser Sax, par défaut, va chercher les DTDs indiquées dans les DOCTYPEs des documents qu'il parse (et c'est très, très, très mal. Vilain parser, vilain !)
    - La DTD officielle du XHTML, est fournie sur le W3C, et donc située sur le site du W3C.
    - Le site du W3C est souvent down et incapable de fournir les DTDs en question, justement parce que des millions de parsers passent leur temps à lui redemander ces fichues DTDs toutes les millisecondes. (Vilains parsers, vilains !)
    - Donc ton parser Sax essaie de récupérer la DTD sur le site du W3C, et ce site étant surchargé il te fait une erreur 503.

    Solution: tu dois trouver un moyen pour configurer ton parser, de sorte qu'il n'aille pas chercher les DTDs externes qu'il trouve dans les DOCTYPE. Et tu dois faire ça, à partir de maintenant et pour toujours, partout, sans exception.
    L'une des solutions est de simplement ignorer les DTDs, uen autre est de les fournir avec ton programme, et de configurer le parser de sorte qu'il aille les chercher sur disque dur et pas à l'URL indiquée.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. URLConnection et erreur 503
    Par Aoyama dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 26/05/2009, 16h43
  2. Erreur 503 - Chargement fichier plat en base
    Par drayogo dans le forum Weblogic
    Réponses: 0
    Dernier message: 18/03/2009, 16h04
  3. oracle mod_plsql erreur 503
    Par lastrecrue dans le forum Oracle
    Réponses: 0
    Dernier message: 19/12/2008, 04h33
  4. Connaitre la cause des erreurs 503
    Par clafff dans le forum Apache
    Réponses: 15
    Dernier message: 17/09/2008, 17h40
  5. [Tomcat] Modifier page d'erreur 503 (ma webapp arrêtée)
    Par divail dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 03/02/2006, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo