2010-07-03 121 views
1

我得到以下行的此错误:java.io.IOException:服务器返回的HTTP响应代码:503对于URL:http://www.w3.org/TR/html4/strict.dtd

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(html.toString()))); 

详情:

java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/html4/strict.dtd 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1290) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282) 
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1192) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1089) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1002) 
    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:510) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) 
    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:107) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283) 
    at concurrency.Worker.run(Worker.java:56) 
    at java.lang.Thread.run(Thread.java:619) 

有没有人有什么线索可能是什么问题?

回答

1

问题是当时W3服务器出现故障。 HTTP响应码503的意思是“服务不可用”。

您在解决方案中所做的是告诉DOM解析器不要尝试获取外部DTD。这有效地禁止验证您的应用程序无法在本地找到的任何DTD。我相信这也有不使用属性的默认值填充DOM的副作用。

最好的解决办法是,你的应用可能使用任何外部的DTD,要么电线它们的副本提取到您的应用程序,或者将它们存储在永久本地缓存。这将您的应用程序与外部服务器停机时间隔离开来,并且还可以减少W3基础架构的负载。

另一种替代方法是将应用程序配置为使用缓存Web代理。

1

好的我找到了解决方案。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); 
Document doc = factory.newDocumentBuilder().parse(new InputSource(new StringReader(html.toString()))); 
相关问题