当前位置: 首页 > 知识库问答 >
问题:

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

李宜然
2023-03-14

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

请帮忙。非常感谢。

共有2个答案

甄煜
2023-03-14

我认为这与axis2的1.7.*版本有关。我已经使用axis2-1.6.2为生成客户端解决了这个问题。您可以在这里下载axis2-1.6。*版本

施刚毅
2023-03-14

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

通过调试程序,名称空间在信封上被正确设置,但在序列化过程中丢失了。在我的例子中,它使用com.sun.xml.internal.stream.writers.XMLStreamWriterImpl,并且该实现中似乎出错了。

我通过向我的类路径添加Woodstox-core和stax2-api来修复这个问题。这些库提供了一个看起来更可靠的替代XMLStreamWriter实现。

 类似资料:
  • 我有困难建立一个有3个类的结构。我不确定包含/转发声明。 下面的代码一直在编译,直到我在inclino.h中添加名称空间和枚举。我从Inclinomeasure.h收到“Inclino尚未声明”。 倾斜度。h 倾斜度 倾角读数.h 结构正确吗?如何访问其他类中的枚举? 提前道谢。 编辑:我修复了名称空间的问题,把它放在一个新的文件,包括由3类。但我似乎误用了include/forward声明。

  • 如何在命名空间中转发声明类。例如,下面是一个库的头文件,用户不需要知道私有的myPtr,所以当包含在头文件下面时,不需要包含boost头文件。那么我如何向前声明boost::shared_ptr以启用用户代码编译呢? MyClass.h

  • 这是一个非常基本的问题,但实际上我从来没有自己定义过名称空间。我正在尝试将我的基于Qt的库中的类分组在各种名称空间中(并且还允许更容易的扩展而不发生名称冲突)。例如,主类(也表示库)属于顶级命名空间: 这个使用了一组其他名称空间和类,这些名称空间和类是在的头文件中定义的,这些头文件包含在的头文件中: 其中Manager.h包含 和configurator.h包含 类的内容在这里并不重要。 在编译时

  • 所以我对Qt和C++都是新手,但我想弄清楚下面的代码是怎么回事。 我有一个头文件和源文件charinfowindow。在我拥有的源文件中: 在头文件中 我试着找出这些代码在网上做什么,但我只是在找关于如何做的资源。 如果有人能告诉我,首先,这些代码是做什么的,其次,他们为什么这样做。不胜感激。 谢谢

  • 我正在尝试使用 JAXB 创建站点地图索引文件。按照创建站点地图的要求,我必须在根元素中添加命名空间属性: 我想有一个简单的方法来解决这个问题。因为这似乎是一个标准过程,所以我不想做复杂的解决方法,也不想在我的项目中添加更多的依赖项来解决这个问题 当前输出如下: 我的< code>SitemapIndex模型如下: 我还尝试手动添加名称空间字段,它可以生成文件,但是当我尝试读取文件时会出现异常。

  • 当我从emacs苹果酒中启动lein repl:headless时,我很难调用默认名称空间。 我的project.clj有: repl条目定义: 当我喝苹果酒时,杰克从项目中走了进来。clj文件,我确实在dev.core ns中结束了: 然而,当我看到实习生时,我会: 当我重新加载命名空间时: 我的命名空间被加载。似乎内部leiningen使用(要求...)方法来加载命名空间,但在文档中找不到关于