我有 WSDL(我从外部提供商那里得到的)。有这样的行:
  <xsd:complexType name="SalesRequest">
                <xsd:all>
                    <xsd:element name="merchantid" type="xsd:int"/>
                    <xsd:element name="password" type="xsd:string"/>
                    ...
                </xsd:all>
  </xsd:complexType>
  ... 
  <message name="SalesResponse">
        <part name="request" type="tns:SalesResponse"/>
  </message>
  ..
  <portType name="InterfacePortType">
    <operation name="Sales">
        <documentation>some text</documentation>
        <input message="tns:SalesRequest"/>
        <output message="tns:SalesResponse"/>
  </operation>
我已经基于这个 WSDL(使用 JAX-RPC)生成了 Java 类。
然后我创建了 Axis 服务(MyService 实现了 InterfacePortType)。
我准备了 XSDD 文件,将 MyService 部署到 Web 应用程序。
因此,然后我调用了 MyServive 的一种方法,并在服务器端响应序列化的那一刻得到了这个错误:
意外元素名称:预期=请求,实际=SalesReturn
这意味着我的 XSDL 和 XSDD 并没有太多其他功能。MyService 准备了这样的响应(但不算通过网络发送):
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
...
<SalesReturn href="#id0"/></ns1:SalesResponse><multiRef xmlns:ns2=
...
</soapenv:Envelope>
问题是:我应该如何处理 WSDD 以便在来自服务的响应 XML 中使用“请求”而不是“SalesReturn” ?
我不知道这个“返回”后缀是从哪里来的。
- 我已经做了一些步骤:
我用谷歌搜索,发现 WSDL 中应该有 'schema elementFormDefault="qualified"'。但是我不能更改 WSDL,因为它是外部的,它是由外部提供商提供给我的。