2015-08-08 85 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方法的名称,没有参数元素 –