Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

White spaces are required between publicId and systemId

I am trying to make a ajax call to other domain locally from my computer by writing some proxy code in jsp. And this is my jQuery AJAX code that is calling 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         });     }; 

And my JSP file is:-

<%@ 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() %>  

And When I check the response, I am getting this error for the XML file it is parsing:

<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> 

And the XMl file is this:-

<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> 

What wrong I am doing here.. Any suggestions will be appreciated..

like image 340
arsenal Avatar asked Jun 28 '11 23:06

arsenal


1 Answers

The error message is actually correct if not obvious. It says that your DOCTYPE must have a SYSTEM identifier. I assume yours only has a public identifier.

You'll get the error with (for instance):

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

You won't with:

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

Notice "" at the end in the second one -- that's the system identifier. The error message is confusing: it should say that you need a system identifier, not that you need a space between the publicId and the (non-existent) systemId.

By the way, an empty system identifier might not be ideal, but it might be enough to get you moving.

like image 161
Max Tardiveau Avatar answered Sep 29 '22 13:09

Max Tardiveau