cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
16 juil. 2007 à 12:39
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
17 juil. 2007 à 11:15
Salut,
J'ai une page JSP (status.jsp) qui est appelée en boucle depuis une autre (results.jsp) par l'objet XMLHttpRequest pour connaitre l'état d'avancement d'un traitement. La page status renvoie à results une réponse sous forme xml contenant des éléments de réponse (nouveaux résultats obtenus, calcul complet fini...)
Mon soucis : dans la page status, je n'arrive pas à formatter correctement la source.
Si j'écris quelquechose comme :
<%@ page language= "java" import="java.lang.*">
<%
...code qui vérifie le status des calculs et qui renvoie les résultats en xml...
%>
la réponse est bien reçue mais considérée comme malformé (on dirait que les retours à la ligne ne conviennent pas)
Si je fait une requête direct depuis un navigateur, j'obtiens le message d'erreur suivant :
Erreur d'analyse XML : instruction de traitement XML pas au début d'une entité externe
Emplacement : http://monsite.com/status.jsp Numéro de ligne 2, Colonne 1 :
<?xml version="1.0" encoding="iso-8859-1"?><results><NbResultats>10</NbResultats> 1 </results>
^
Par contre si j'écris (pas de retour à la ligne entre les blocs) :
<%@ page language ="java" import="java.lang.*"><%
...code qui vérifie le status des calculs et qui renvoie les résultats en xml...
%>
la réponse est bien reçue et correctement traitée.
Si je fait une requête direct depuis un navigateur, j'obtiens bien ma réponse :
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 16 juil. 2007 à 19:41
Ca venait de la ligne <?xml version="1.0" encoding="iso-8859-1"?>
En enlevant l'instruction qui crée cette ligne, tout marche.
J'avais une instruction qui faisait :
response.setContentType("text/xml; charset=ISO-8859-1");
puis une autre qui faisait :
out.write("<?xml version="1.0" encoding="iso-8859-1"?>");
Je voulais faire bien, dans les normes et tout le toutim.
Mais en enlevant le prologue du fichier xml et en ne concervant que le contentType, ça passe.
Si quelqu'un voit pourquoi...
Sinon je déclare que les normes c'est porte nawak...
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 17 juil. 2007 à 11:15
J'ai compris pourquoi pour ceux que ça interresse :
Il faut placer le prologue au tout début de la jsp, c'est plus propre, dans la mesure où certains taglib généraient des caractères blancs, Le xml était considéré comme invalide. Le problème est similaire à celui des header en php (la génération de header doit être fait en tout début de fichier pour éviter la production de caractères blancs).