我需要在我的应用程序中使用SOAP WebService,因此我获得了WSDL文件以在wsimport的帮助下生成所需的类。问题是在解析过程中我收到以下错误:
[错误]无效的扩展元素:“soap:body”(在命名空间中) “http://schemas.xmlsoap.org/wsdl/soap/”)
我尝试了-extension标志但没有成功。
过去有没有人遇到过类似的问题?如果是的话,你是如何解决的?
答案 0 :(得分:1)
不确定这是否是全部错误...
针对该更简单的WSDL尝试wsimport
返回:
[ERROR] invalid extension element: "soap:header" (in namespace "http://schemas.xmlsoap.org/wsdl/soap/")
错误消息没有给出位置,但是问题是父<soap:header>
下的<soap:body>
和<fault>
:
<fault name="Error">
<soap:header message="sm:GetSeatMapCountsErrorOutput" part="header" use="literal"/>
<soap:header message="sm:GetSeatMapCountsErrorOutput" part="header2" use="literal"/>
<soap:body parts="body" use="literal" />
</fault>
通常情况是这样:
<fault name="Error">
<soap:fault name="Error" use="literal" />
</fault>
在前面的注释(http://ws.e-podroznik.pl/?wsdl)中的链接中看起来这是正确的。也许此后已解决?
要弄清楚无效<soap:header>
在消息中的位置,一种技巧是使用wsimport -Xdebug
,它将在输出中包括异常的堆栈跟踪:
Caused by: com.sun.tools.ws.wsdl.framework.ParseException: invalid extension element: "soap:header" (in namespace "http://schemas.xmlsoap.org/wsdl/soap/")
at com.sun.tools.ws.wsdl.parser.Util.fail(Util.java:186)
at com.sun.tools.ws.wsdl.parser.SOAPExtensionHandler.handleFaultExtension(SOAPExtensionHandler.java:413)
at com.sun.tools.ws.api.wsdl.TWSDLExtensionHandler.doHandleExtension(TWSDLExtensionHandler.java:87)
其中的线索是SOAPExtensionHandler.handleFaultExtension()
,表明问题出在父元素<fault>
之下。
类似地,可能是handleBindingExtension()
下的<binding>
,handleOperationExtension()
下的<operation>
,等等。