名称空间问题从Flex4调用Axis2 Web服务,客户端由Flex Builder内省生成

时间:2011-04-12 08:01:35

标签: xml flex namespaces flex4 axis2

我有一个使用Axis2构建的基于java的Web服务。 WSDL是由Eclipse 3.6向导生成的。

我有一个Flex 4客户端,通过Flash Builder 4中的WSDL使用内省构建。

对于方法采用像String或int这样的'简单'类型的调用,一切似乎都没问题,但对于参数为(在Java端)和OMElement(即XML数据)的调用,我设置如下服务上的运行时错误:

org.apache.axis2.engine.AxisEngine  - namespace mismatch require http://server.rsc.geo.othermaps.com found none

http://server.rsc.geo.othermaps.com确实是WSDL中声明的目标名称空间。

相同的工作流程(使用由Web服务自省构建的自动生成的客户端)在Flex 3中对同一服务工作正常,所以我不知道从哪里开始搜索。所以我真的需要手动将名称空间添加到我提交的XML数据中吗?

d

2 个答案:

答案 0 :(得分:0)

如果您回来的XML在顶部没有namespace声明,我肯定会添加它。

答案 1 :(得分:0)

您正在尝试使用由Axis2创建的SOAP Web服务。

确保您的SOAP enveloppe请求名称空间与wsdl名称空间完全匹配:

假设您的命名空间名称是:yourNamespace

您的HTTP POST请求应如下所示:

<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:v2="yourNamespace">
  <soap:Body>
   <v2:yourActionName>
    <v2:yourFirstParameter>yourFirstParameterValue</v2:yourFirstParameter>
    <v2:yourSecondParameter>yourSecondParameterValue</v2:yourSecondParameter>
   </v2:yourActionName>
  </soap:Body>
</soap:Envelope>

并且WSDL应该以:

开头
<wsdl:definitions targetNamespace="yourNamespace">
 <wsdl:documentation>yourWebServiceProjectNameHere</wsdl:documentation>
   <wsdl:types>
     <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="yourNamespace">