我有一个使用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
答案 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">