我正在使用一个我无法完全共享的WSDL的Web服务,因此我将对其进行编辑以显示结构:
<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="ManagerService" targetNamespace="..." xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="..." xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="..." xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xs:schema targetNamespace="..." version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
<xs:schema targetNamespace="..." version="1.0" xmlns:tns="..." xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
</types>
<message name="Manager_someOperation">
<part name="..." type="ns1:..."/>
<part name="..." type="tns:..."/>
</message>
<message name="Manager_someOperationResponse">
<part name="someOperationReturn" type="tns:someOperationSatus"/>
</message>
<portType name="Manager">
<operation name="someOperation" parameterOrder="... ...">
<input message="tns:Manager_someOperation"/>
<output message="tns:Manager_someOperationResponse"/>
</operation>
</portType>
<binding name="ManagerBinding" type="tns:Manager">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="someOperation">
<soap:operation soapAction=""/>
<input>
<soap:body namespace="..." use="literal"/>
</input>
<output>
<soap:body namespace="..." use="literal"/>
</output>
</operation>
</binding>
<service name="ManagerService">
<port binding="tns:ManagerBinding" name="Manager">
<soap:address location="..."/>
</port>
</service>
</definitions>
我的问题与输入和输出信封有关。好吧,主要是输出包络。我需要手动构建输入信封,并且还需要知道在不运行服务的情况下输出信封的外观。
作为RPC样式的Web服务,我知道输入信封将类似于:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mes="...">
<soapenv:Header/>
<soapenv:Body>
<mes:someOperation>
...
</mes:someOperation>
</soapenv:Body>
</soapenv:Envelope>
我希望输出信封看起来像:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:Manager_someOperationResponse xmlns:ns2="...">
<someOperationReturn>
...
</someOperationReturn>
</ns2:Manager_someOperationResponse>
</S:Body>
</S:Envelope>
但是奇怪的是,它看起来实际上是这样的:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:someOperationResponse xmlns:ns2="...">
<someOperationReturn>
...
</someOperationReturn>
</ns2:someOperationResponse>
</S:Body>
</S:Envelope>
请注意,它返回的是“ someOperationResponse ”,而不是“ Manager_someOperationResponse ”。
所以我的问题是:有人知道为什么会发生这种情况吗?我似乎在Web服务定义中找不到导致此行为的任何内容,也找不到在此特定Web服务中的任何设置可以指出正确的方向。