当功能 "http://apache.org/xml/features/disallow-doctype-decl" 设置为 true 时,不允许获取 DOCTYPE

Getting DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true

我得到

DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true
line 1 of https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl

使用 wsimport 从 wsdl 文件生成 java 类 时出错。

是否有解决此问题的方法或解决方案,特别是在使用 wsimport 时?

以下是我使用的命令以及我从 wsimport 得到的完整响应:

wsimport" -Xnocompile -extension -clientjar my.jar -d . -generateJWS https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl   

正在解析 WSDL...

[错误] 当功能“http://apache.org/xml/features/disallow-doctype-decl”设置为 true 时,不允许使用 DOCTYPE。 https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl

的第 1 行

[错误] 当功能“http://apache.org/xml/features/disallow-doctype-decl”设置为 true 时不允许使用 DOCTYPE。

无法读取 WSDL 文档:https://core4.gatewayedi.com/v1/caqhcoreiv/caqhcorev4.svc?wsdl,因为 1) 找不到该文档; /2) 文档无法读取; 3) 文档的根元素不是wsdl:definitions.

[错误] 在提供的 WSDL 中找不到 wsdl:service:

需要提供至少一个 WSDL,其中至少有一个服务定义。

无法解析 WSDL。

正在下载 WSDL 和关联的元数据

    Exception in thread "main" java.lang.IllegalStateException: DOMStreamReader: Calling next() at END_DOCUMENT
    at com.sun.xml.internal.ws.streaming.DOMStreamReader._next(DOMStreamReader.java:764)
    at com.sun.xml.internal.ws.streaming.DOMStreamReader.next(DOMStreamReader.java:737)
    at com.sun.xml.internal.ws.util.xml.XMLStreamReaderToXMLStreamWriter.bridge(XMLStreamReaderToXMLStreamWriter.java:92)
    at com.sun.tools.internal.ws.util.WSDLFetcher.fetchFile(WSDLFetcher.java:121)
    at com.sun.tools.internal.ws.util.WSDLFetcher.fetchWsdls(WSDLFetcher.java:86)
    at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:437)
    at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190)
    at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159)
    at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42)

看起来 wsimport 命令的行为是区分大小写的。这个提到了类似的东西。

客户端是用(wsimport 与 Oracle JDK 版本 1.8 捆绑在一起生成的。0_202-b08):

wsimport -Xnocompile -extension -clientjar my.jar -d . -generateJWS https://core4.gatewayedi.com/V1/CAQHCoreIV/caqhcoreV4.svc?wsdl

主要区别在于 URL 中使用了区分大小写。 URL https://core4.gatewayedi.com/V1/CAQHCoreIV/caqhcoreV4.svc?wsdl 匹配 使用 WSDL 文件中的 location 条目。