Des espaces blancs sont nécessaires entre publicId et systemId

j'essaie de faire un appel ajax à un autre domaine localement à partir de mon ordinateur en écrivant un code proxy dans jsp. Et c'est mon code AJAX jQuery qui appelle proxy.jsp page.

 var metadata = 'https://rest-search.host.com/machine/search/meta?id=';

var on_show_info= function() {

    var AjaxCall = data + current_doc_info.id;
    alert(AjaxCall);
                request_meta_info = $.ajax({
                url: "proxy.jsp?url=" + AjaxCall,
                type: 'GET',
                success: check,
                error: error
        });
    };

et mon fichier JSP est: -

<%@ page language="java" import="org.w3c.dom.*,javax.xml.parsers.DocumentBuilder,javax.xml.parsers.DocumentBuilderFactory,java.net.*,java.io.*" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%

String urlToQuery = request.getParameter("url");
System.out.println("rj   " +urlToQuery);
URL url = new URL(urlToQuery);
final String login ="user";
final String password ="pass";

Authenticator.setDefault(new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication (login, password.toCharArray());
    }
});
URLConnection conn = url.openConnection();

InputStream in = conn.getInputStream();

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db =dbf.newDocumentBuilder();
Document doc=db.parse(urlToQuery);


NodeList nl= doc.getElementsByTagName("attr");
%>


<%= nl.item(0).getFirstChild().getNodeValue() %> 

Et Quand je vérifie la réponse, j'obtiens cette erreur du fichier XML, c'est l'analyse:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 500 White spaces are required between publicId and systemId.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /proxy.jsp. Reason:
<pre>    White spaces are required between publicId and systemId.</pre></p><h3>Caused by:</h3><pre>org.xml.sax.SAXParseException: White spaces are required between publicId and systemId.
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
    at org.apache.jsp.proxy_jsp._jspService(org.apache.jsp.proxy_jsp:70)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
    at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
    at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
    at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
    at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:67)
    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122)
    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:915)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
</pre>
<hr /><i><small>Powered by Jetty://</small></i><br/>                                                
</body>
</html>

et le fichier XMl est le suivant: -

<results><result><attr value="HW/SW" name="Line"/><attr value="ASIC" name="Description"/><attr value="CD" name="Number"/><attr value="AS" name="DocumentType"/><attr value="" name="Date"/><</result></results>

Ce mal, je le fais ici.. Toutes les suggestions seront apprécier..

28
demandé sur arsenal 2011-06-29 03:14:59

5 réponses

le message d'erreur est en fait correct s'il n'est pas évident. Il est dit que votre DOCTYPE doit avoir un identifiant système. Je suppose que le vôtre n'a qu'un identifiant public.

Vous obtiendrez l'erreur avec (par exemple):

<!DOCTYPE persistence PUBLIC
    "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

Vous n'aurez pas avec:

<!DOCTYPE persistence PUBLIC
    "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" "">

Avis "" à la fin de la seconde-qui est l'identifiant du système. Le message d'erreur est déroutant: il devrait indiquer que vous avez besoin d'un identificateur de système, pas que vous avez besoin d'un espace entre publicId et la (non-existant) idsystème.

d'ailleurs, un identifiant de système vide n'est peut-être pas idéal, mais il pourrait être suffisant pour vous faire bouger.

28
répondu Max Tardiveau 2012-02-13 13:14:12

je viens de trouver ce post: http://forum.springsource.org/showthread.php?68949-White-spaces-are-required-between-publicId-and-systemId./page2&s=c69fe19798f5a071d22eaf681ca84a56

quelques personnes ici ont eu du succès en changeant les lignes dans un fichier XML.

1
répondu Hudspeth 2011-06-28 23:32:31

je viens de trouver mon auto avec cette Exception, j'étais en train de consommer un JAX-WS, avec une URL personnalisée comme ceci:

String WSDL_URL= <get value from properties file>;
Customer service = new Customer(new URL(WSDL_URL));
ExecutePtt port = service.getExecutePt();
return port.createMantainCustomers(part);

et Java a lancé:

XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,63]
Message: White spaces are required between publicId and systemId.

il S'avère que la chaîne D'URL utilisée pour construire le service manquait le "?wsdl" à la fin. Par exemple:

Mauvais:

http://www.host.org/service/Customer

Bon:

http://www.host.org/service/Customer?wsdl
1
répondu raoolio 2014-05-09 21:21:46

changer l'ordre des États. Pour moi, changer le bloc de code

xsi:schemaLocation="http://www.springframework.org/schema/beans 
                    http://www.springframework.org/schema/context
                    http://www.springframework.org/schema/beans/spring-beans.xsd" 

xsi:schemaLocation="http://www.springframework.org/schema/beans 
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/context"

est valide.

1
répondu ÖMER TAŞCI 2016-11-23 12:50:27

si vous travaillez à partir d'un réseau qui vous oblige à utiliser un proxy dans votre navigateur pour vous connecter à internet (probablement un immeuble de bureaux), cela pourrait être le cas. J'ai eu le même problème et en ajoutant le proxy configuration des paramètres réseau résolu.

  • Aller à vos préférences (Eclipse -> Préférences (sur un Mac, ou de la Fenêtre -> Préférences (sur Windows)
  • puis -> Général -> étendre pour voir la liste ci-dessous - > sélectionner les connexions réseau (ne pas sélectionner développez)
  • au haut de la page qui apparaît il y a une goutte vers le bas, sélectionnez "Manuel."
  • puis sélectionnez " HTTP "dans la liste directement en dessous de la liste déroulante (qui devrait maintenant avoir toutes ses options cochées), puis cliquez sur le bouton" Modifier " à la droite de la liste.
  • saisissez l'url et le port du proxy dont vous avez besoin pour vous connecter à internet dans votre navigateur Web normalement.
  • répéter pour " HTTPS."

si vous ne connaissez pas l'url du mandataire et port, parlez à votre administrateur réseau.

0
répondu Kirsten Crear 2015-03-27 15:43:06