Welcome to WebmasterWorld Guest from 50.17.74.162

Forum Moderators: httpwebwitch

Message Too Old, No Replies

What is the correct parse of this request?

Seems gSOAP is not handling mandatory enumeration elements properly(?)

     

sune ahlgren

4:09 pm on Mar 19, 2009 (gmt 0)

5+ Year Member



Hi,

I have implemented a very simple SOAP server using gSOAP. I use a xsd containing among other things a declaration as below:

<!--===============================-->
<xs:complexType name="Information">
<xs:sequence>
<xs:element name="Type" type="tt:DynamicType"/>
<xs:element name="Name" type="tt:Name" minOccurs="0"/>
<xs:element name="Age" type="tt:Age" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--===============================-->
<xs:simpleType name="DynamicType">
<xs:restriction base="xs:string">
<xs:enumeration value="Male"/>
<xs:enumeration value="Female"/>
</xs:restriction>
</xs:simpleType>

What surprises me is that if I send a request to this server and that request contains an Information element and I leave out the Type element, this element is set to 0 (that is the same as Male) by gSOAP before my server function is called.

This is what a request might look like:

<SOAP-ENV:Body>
<tds:Information>
<tds:Name>Nisse</tds:Name>
</tds:Information>
</SOAP-ENV:Body>

Why isn't this request rejected? Type is mandatory given the schema above.

BRs
/Sune

httpwebwitch

8:13 pm on Apr 20, 2009 (gmt 0)

WebmasterWorld Administrator httpwebwitch is a WebmasterWorld Top Contributor of All Time 10+ Year Member



Hi Sune, welcome to WebmasterWorld!

I guess the underlying question is: are requests being validated using the schema at all? Try putting some garbage nodes in the request, and see if you still get no errors. It could be that your XSD is there, but nothing is actually enforced.