2015-12-07 95 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> 

服務器如何知道要執行哪個操作?

回答