Axis2 - 未声明的命名空间前缀"soapenv"



>有谁知道如何在调用由axis2 1.7.5(Wsdl2Java(生成的存根时解决以下问题?

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);

甚至直接将存根中的命名空间设置为

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设置问题

请帮忙。多谢。

我在使用 Axis2 1.7.9 和 Axiom 1.2.22 时遇到了同样的问题。

使用调试器单步执行时,命名空间在信封上设置正确,但在序列化过程中丢失。 就我而言,它使用的是com.sun.xml.internal.stream.writers.XMLStreamWriterImpl,并且该实现中似乎出了点问题。

我通过将 woodstox-core 和 stax2-api 添加到我的类路径来解决此问题。 这些库提供了一个替代的XMLStreamWriter实现,它似乎更可靠。

我认为这与 axis2.7 的 1.7.* 版有关,用于解决这个特定的包络问题。 我已经使用 axis2-1.6.2 为生成客户端解决了这个问题。 您可以在此处下载 axis2-1.6.* 版本

相关内容

  • 没有找到相关文章

最新更新