Java publicId和systemId之间需要空格

Java publicId和systemId之间需要空格,java,dom,jquery,xml-parsing,Java,Dom,Jquery,Xml Parsing,我试图通过在jsp中编写一些代理代码,从我的计算机本地对其他域进行ajax调用。这是我调用proxy.jsp页面的jQuery AJAX代码 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);

我试图通过在jsp中编写一些代理代码,从我的计算机本地对其他域进行ajax调用。这是我调用proxy.jsp页面的jQuery AJAX代码

 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
        });
    };
我的JSP文件是:-

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

当我检查响应时,它正在解析的XML文件出现以下错误:

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

错误:publicId和systemId之间需要500个空格。
HTTP错误500
访问/proxy.jsp时出现问题。原因:
<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>
publicId和systemId之间需要空格。

原因:org.xml.sax.saxpasseException:publicId和systemId之间需要空格。 位于org.apache.xerces.parsers.DOMParser.parse(未知源) 位于org.apache.xerces.jaxp.DocumentBuilderImpl.parse(未知源) 位于javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 在org.apache.jsp.proxy\u jsp.\u jsp服务(org.apache.jsp.proxy\u jsp:70)上 位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389) 位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) 位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 位于org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) 位于org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 位于org.tuckey.web.filters.urlrewrite.normalrewritenurl.doRewrite(normalrewritenurl.java:213) 位于org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171) 位于org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 位于org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 位于org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 在com.google.inject.servlet.filterchaininciation.doFilter上(filterchaininciation.java:67) 位于com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122) 位于com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110) 位于org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 位于org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 位于org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 位于org.mortbay.jetty.Server.handle(Server.java:326) 位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536) 位于org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:915) 位于org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) 位于org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) 位于org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 位于org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
由码头供电://
XMl文件如下所示:-

<!DOCTYPE persistence PUBLIC
    "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" "">
我刚找到这篇帖子:


这里有几个人成功地在XML文件中切换了行。

如果不明显,错误消息实际上是正确的。它表示您的DOCTYPE必须具有系统标识符。我想你的只有一个公共标识符

您将获得以下错误(例如):


您将不会使用以下选项:

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

请注意第二个字段末尾的
,这是系统标识符。错误消息令人困惑:它应该说您需要一个系统标识符,而不是在publicId和(不存在的)systemId之间需要一个空格


顺便说一句,一个空的系统标识符可能并不理想,但它可能足以让您移动。

我刚刚发现自己有一个例外,我试图使用一个JAX-WS,带有如下自定义URL:

http://www.host.org/service/Customer
结果表明,用于构造服务的URL字符串在末尾缺少“?wsdl”。 例如:

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

好:


如果您在某个网络上工作,需要在浏览器中使用代理连接到internet(可能是办公楼),则可能就是这样。我也遇到了同样的问题,将代理配置添加到网络设置中解决了这个问题

  • 转到您的首选项(Mac上的Eclipse->preferences,或Windows上的Windows->preferences)
  • 然后->常规->展开以查看下面的列表->选择网络连接(不展开)
  • 在出现的页面顶部有一个下拉列表,选择“手动”
  • 然后在下拉列表正下方的列表中选择“HTTP”(现在应该选中所有选项)并
    http://www.host.org/service/Customer
    
    http://www.host.org/service/Customer?wsdl
    
    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"