2015-12-07 47 views
0

我想弄清楚WS SOAP服务器在接收SOAP时如何知道要执行什么操作。那么,有人可以澄清以下内容吗?WSDL操作和SOAP:这实际上是如何工作的?

有迹象表明有这样的事情在网络上的实例数:

<wsdl:operation name="function1"> 
     <wsdl:input message="function1Request"/> 
     <wsdl:output message="function1Response"/> 
     <wsdl:fault message="someFault"/> 
    </wsdl:operation> 

<wsdl:operation name="function2"> 
     <wsdl:input message="function2Request"/> 
     <wsdl:output message="function2Response"/> 
     <wsdl:fault message="someFault"/> 
    </wsdl:operation> 

然后SOAP请求调用期函数如下:

<SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP-ENV:Body> 
    <m:function1Request xmlns:m="http://namespaces.com"> 
    ... 
    </m:function1Request> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

因此,操作本身是没有在SOAP中发送。它只包含请求的有效载荷。然后,我认为,服务器必须将请求类型与WSDL中的操作定义进行匹配,以便找出实际需要调用的操作。

好的,这个工作在操作和输入参数类型之间有1对1关系的情况下。

但是,如果我有2个操作具有相同的输入类型呢?类似这样的:

<wsdl:operation name="function1"> 
     <wsdl:input message="function1Request"/> 
     <wsdl:output message="function1Response"/> 
     <wsdl:fault message="someFault"/> 
    </wsdl:operation> 

<wsdl:operation name="function2"> 
     <wsdl:input message="function1Request"/> 
     <wsdl:output message="function2Response"/> 
     <wsdl:fault message="someFault"/> 
    </wsdl:operation> 

服务器如何知道要执行哪个操作?

回答