【发布时间】:2017-08-15 04:14:58
【问题描述】:
有谁知道在调用axis2 1.7.5(Wsdl2Java)生成的stub时如何解决以下问题?
org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "soapenv"
at [row,col {unknown-source}]: [1,56]
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:508)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:368)
我发现存根发送了以下请求而没有添加/定义导致问题的 SOAP 版本 (xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/")
<soapenv:Envelope>
<soapenv:Header></soapenv:Header>
<soapenv:Body>....</soapenv:Body>
</soapenv:Envelope>
因此,我尝试将 SoapVersionURL 设置如下
stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axis2.namespace.Constants.URI_SOAP11_ENV);
甚至直接将stub中的命名空间设置为
envelope.declareNamespace("http://schemas.xmlsoap.org/soap/envelope/", "soapenv")
但是,这两种方法仍然忽略“xmlns:soapenv”命名空间并导致未定义前缀“soapenv”。
如果我在 SoapUI 中发出请求,我可以在请求中看到 Soap 版本,如下所示
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>
我想可能是我的axis2/wsdl2Java设置问题
请帮忙。非常感谢。
【问题讨论】:
-
嗨,您找到解决方案了吗?