Hi Mike, Do you see any exception in servers side logs? if there is, send the stack trace of server side too?
Thanks, Shameera. On Fri, Apr 11, 2014 at 3:42 PM, Mike Hawes <mike.ha...@ombiel.com> wrote: > I've written a web service with Axis2 1.6.2 with a request that extends > another type, with a request element that looks like this in its .xsd: > > <xsd:element name="requestName"> > <xsd:complexType> > <xsd:complexContent> > <xsd:extension base="requestBaseType"> > <xsd:sequence> > <xsd:element name="param1" type="xsd:int" > minOccurs="1" maxOccurs="1" /> > <xsd:element name="param2" type="xsd:string" > minOccurs="1" maxOccurs="1" /> > <xsd:element name="param3" type="xsd:int" > minOccurs="0" maxOccurs="1" /> > </xsd:sequence> > </xsd:extension> > </xsd:complexContent> > </xsd:complexType> > </xsd:element> > > <xsd:complexType name="requestBaseType"> > <xsd:sequence> > <xsd:element name="baseTypeParam1" type="xsd:string" minOccurs="0" > maxOccurs="1" /> > </xsd:sequence> > </xsd:complexType> > > Sending requests to this web service works just fine if I send the > requests from SoapUI or similar, but if I send the same request via GET > from a browser I get this error: > > <faultstring>org.apache.axis2.databinding.ADBException: Unexpected > subelement {http://campusm.gw.com/campusm}requestName</faultstring> > > It's saying there's an unexpected element of a type that is the correct > request type, even though in a GET request that request object is implicit. > > If I stop it extending requestBaseType, it works fine in both the browser > and SoapUI. Here's the xsd definition that fixes the problem: > > <xsd:element name="requestName"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="baseTypeParam1" type="xsd:string" > minOccurs="0" maxOccurs="1" /> > <xsd:element name="param1" type="xsd:int" minOccurs="1" > maxOccurs="1" /> > <xsd:element name="param2" type="xsd:string" minOccurs="1" > maxOccurs="1" /> > <xsd:element name="param3" type="xsd:int" minOccurs="0" > maxOccurs="1" /> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > > Here's an example of the GET request I send in the browser that gets this > error: > > > http://localhost:8080/path/to/webservice?baseTypeParam1=stuff¶m1=12¶m2=thing¶m3=13 > > Here's an example of the request I send from SoapUI that works: > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:cam="http://campusm.gw.com/campusm"> > <soapenv:Header/> > <soapenv:Body> > <cam:requestName> > <cam:baseTypeParam1>stuff</cam:baseTypeParam1> > <cam:param1>12</cam:param1> > <cam:param2>thing</cam:param2> > <cam:param3>13</cam:param3> > </cam:requestName> > </soapenv:Body> > </soapenv:Envelope> > > I need the request to extend a type so that I can have multiple web > services sending a large common subset of their request parameters to the > same function in my Java code. This would allow the function to take a > parameter of the base request type, and have each web service just pass its > request into that function without any conversion or worring about the > individual parameters at that point. > > I also need to be able to call the web services with CURL, which is not > possible if the web services won't work with a GET request. > > This seems to be a bug with Axis2. Is this a known issue and will it be > fixed? > > Best regards, > Mike > > -- > campusM: http://www.campusM.com > Email: mike.ha...@ombiel.com > Tel: 01902 837451 > -- Best Regards, Shameera Rathnayaka. email: shameera AT apache.org , shameerainfo AT gmail.com Blog : http://shameerarathnayaka.blogspot.com/