2015-08-08 51 views
0

我有單個web方法的web服務自動分配0值:Web服務請求與丟失的int參數時的minOccurs = 1

<s:element name="SendInt"> 
    <s:complexType> 
     <s:sequence> 
     <s:element minOccurs="1" maxOccurs="1" name="someInt" type="s:int"/> 
     </s:sequence> 
    </s:complexType> 
</s:element> 

的WSDL明確指出,請求參數是一個值類型(INT)與的minOccurs = 1,但是當我使用了SoapUI發送以下請求:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <tem:SendInt> 
     </tem:SendInt> 
    </soapenv:Body> 
</soapenv:Envelope> 

我得到的,而不是表明someInt參數丟失的錯誤,從服務器的有效響應。

在服務器我可以看到,0值被分配給someInt參數。

這是正常的行爲呢?

如果是這樣,我怎麼能知道我的網絡方法,如果用戶發送0值或只是忘了發送這個參數?

如果這不是一個正常的行爲,我該如何解決它?

回答

0

嘿,當你指定請求中的元素時,你只是沒有給它賦值。 int的默認值是0,所以是的,這是正常的行爲。如果你遺漏了元素,你將得到一個無效的請求。如果他們忘記發送這個參數,那麼整個元素可能就不存在了。在這種情況下,Web服務將拋出一個錯誤

+0

很抱歉,但我不明白的東西 我省略了線 '一些整型值' 如何在請求中的元素? 對不起,如果它是明顯的,但你可以請擴大一點點? –

+0

當然,在你的wsdl中,你有正確的元素SendInt,你在soapUI請求中使用它,你在那裏有元素。這意味着你確實在請求中指定了元素,但沒有給它賦值。然後默認爲0. – Chino

+0

但是在我的WSDL中,minOccurs = 1分配給** someInt **元素,而不是** SendInt **元素(這是web方法的名稱)。據我瞭解,在我的請求中,我只發送web方法的名稱,沒有參數元素 –