Java 为什么在从thid party url读取xml时出现此异常
我正在编写一个程序来连接到第三方url并从那里读取xml。虽然它在windows环境下tomcat服务器上的本地机器上运行得很好,但当我在linux环境下的weblogic上部署它时,我得到了一个异常。谢谢你的帮助。提前谢谢 以下是代码片段:Java 为什么在从thid party url读取xml时出现此异常,java,xml,weblogic,Java,Xml,Weblogic,我正在编写一个程序来连接到第三方url并从那里读取xml。虽然它在windows环境下tomcat服务器上的本地机器上运行得很好,但当我在linux环境下的weblogic上部署它时,我得到了一个异常。谢谢你的帮助。提前谢谢 以下是代码片段: HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.s
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.connect();
log.info("Confirmation URL getURL(): "+connection.getURL());
log.info("Confirmation URL getContentEncoding: "+connection.getContentEncoding());
log.info("Confirmation URL getContentType: "+connection.getContentType());
log.info("Confirmation URL getContentLength: "+connection.getContentLength());
log.info("Confirmation URL getContent(): "+connection.getContent());
log.info("Confirmation URL getAllowUserInteraction(): "+connection.getAllowUserInteraction());
log.info("Confirmation URL getClass(): "+connection.getClass());
log.info("Confirmation URL getHeaderFields(): "+connection.getHeaderFields());
Map<String,List<String>> requestProperties = connection.getRequestProperties();
if(requestProperties!=null){
Iterator<String> keysIterator = requestProperties.keySet().iterator();
while (keysIterator.hasNext()) {
String key = (String) keysIterator.next();
log.info("********* RequestProperty "+key+" : "+requestProperties.get(key));
}
}
else {
log.info("requestProperties is null ");
}
InputStream xmlcontent = connection.getInputStream();
Date date = new Date();
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xmlcontent); // <-- exception thrown here
例外情况表明: 文档中根元素后面的标记必须格式正确 因此,我希望通过的文档是无效的,因为它不是格式良好的XML。为了解决这个问题,最好在调试期间将流的输出捕获到字符串中(或将其重定向到文件等),这样您就可以准确地调查哪些字符可以传递到另一端
出现这种情况的原因有多种(例如,您从Web服务器收到404/500错误-HTML页面几乎肯定是“接近XML”,但格式不正确)。您需要查看实际数据以了解发生了什么,因为我认为这确实是来自服务器的错误消息。异常状态表明 文档中根元素后面的标记必须格式正确 因此,我希望通过的文档是无效的,因为它不是格式良好的XML。为了解决这个问题,最好在调试期间将流的输出捕获到字符串中(或将其重定向到文件等),这样您就可以准确地调查哪些字符可以传递到另一端 出现这种情况的原因有多种(例如,您从Web服务器收到404/500错误-HTML页面几乎肯定是“接近XML”,但格式不正确)。您需要查看实际数据以了解发生了什么,因为我希望这确实是来自服务器的错误消息。谢谢您的回复。 事实上,返回的服务器状态是301,所以在从其中一个博客获得线索后(http://tech.rationalaspect.com/2010/10/301-moved-permanently-urlconnection-and.html)在谷歌搜索时,我只是在基本url的末尾添加了一个“/”,这对我来说很有效。尽管如此,我不能完全肯定这有什么不同。谢谢您的回复。
事实上,返回的服务器状态是301,所以在从其中一个博客获得线索后(http://tech.rationalaspect.com/2010/10/301-moved-permanently-urlconnection-and.html)在谷歌搜索时,我只是在基本url的末尾添加了一个“/”,这对我来说很有效。尽管如此,我不能完全确定这会有什么不同。请重新格式化代码:只需在代码行开头加4个空格(或一个制表符)请重新格式化代码:只需在代码行开头加4个空格(或一个制表符)
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1414)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver.next(XMLDocumentScannerImpl.java:1423)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:163)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at com.scea.shoppingcart.controller.OrderConfirmationTask.readXml(OrderConfirmationTask.java:337)
at com.scea.shoppingcart.controller.OrderConfirmationTask.getFeed(OrderConfirmationTask.java:213)
at com.scea.shoppingcart.controller.OrderConfirmationTask.generateUrlToHit(OrderConfirmationTask.java:161)
at com.scea.shoppingcart.controller.OrderConfirmationTask.processRequest(OrderConfirmationTask.java:112)
at com.scea.shoppingcart.controller.OrderConfirmationJob.executeInternal(OrderConfirmationJob.java:22)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
2011-01-20 16:06:01,539 [ERROR] - ==Exception processing Order Confirmation XML !!!==The markup in the document following the root element must be well-formed.=stackTrace=org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1414)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver.next(XMLDocumentScannerImpl.java:1423)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:163)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at com.scea.shoppingcart.controller.OrderConfirmationTask.readXml(OrderConfirmationTask.java:337)
at com.scea.shoppingcart.controller.OrderConfirmationTask.getFeed(OrderConfirmationTask.java:213)
at com.scea.shoppingcart.controller.OrderConfirmationTask.generateUrlToHit(OrderConfirmationTask.java:161)
at com.scea.shoppingcart.controller.OrderConfirmationTask.processRequest(OrderConfirmationTask.java:112)
at com.scea.shoppingcart.controller.OrderConfirmationJob.executeInternal(OrderConfirmationJob.java:22)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)