Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

Ticket #119 (closed defect: fixed)

Opened 3 years ago

Last modified 2 years ago

Cannot talk to doc/literal service which is has elementFormDefault="unqualified"

Reported by: greg@lapcominc.com Assigned to: nahi
Priority: highest Milestone:
Component: soap4r Version:
Keywords: elementFormDefault unqualified Cc: None

Description

Hello-

I am trying to use soap4r (with wsdl2ruby generated code) to talk to my SOAP service which is written in Java and uses a schema to validate soap messages. My messages are defined in the schema as follows:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:lp="Lightpaper" targetNamespace="Lightpaper"> <xs:complexType name="login">

<xs:sequence>

<xs:element name="username" type="xs:string"/> <xs:element name="password" type="xs:string"/> <xs:element name="timezone" type="xs:string" minOccurs="0" maxOccurs="1"/>

</xs:sequence>

<xs:attribute name="client" type="xs:string" use="optional"/> <xs:attribute name="version" type="xs:int" use="optional"/> </xs:complexType> <xs:element name="login" type="lp:login"/>

<xs:complexType name="loginResponse">

<xs:sequence>

<xs:element name="loginResult">

<xs:complexType>

<xs:sequence>

<xs:element name="sessionID" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType> <xs:element name="loginResponse" type="lp:loginResponse"/>

</xs:schema>

I put this same code into the schema section of my wsdl and when I used the generated code, the message sent from soap4r looked like this: <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<env:Body>

<login client="Lightpaper"

version="201004" xmlns="Lightpaper">

<username>glappen</username> <password>lightbeam</password>

</login>

</env:Body>

</env:Envelope>

And I got the following error back: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<faultcode>soapenv:Client</faultcode> <faultstring>Element not allowed: username@Lightpaper in element login@Lightpaper</faultstring>

</soapenv:Fault>

</soapenv:Body>

</soapenv:Envelope>

which means that my service is rejecting the request because the username element in the request is in the same namespace as the login element, but according to the schema the username should be sent unqualified, which is the default value for elementFormDefault. Here is an example of a request that succeeds:

<m:login client="Lightpaper" version="201004" xmlns:m="Lightpaper">

<username>glappen</username> <password>lightbeam</password> <timezone>EDT</timezone>

</m:login>

Notice the difference: the login element is stillin the "Lightpaper" namespace, but the namespace has a prefix "m" in this case, which means the username, password, and timezone elements are in the global namespace, not in Lightpaper, just as you would expect with elementFormDefault="unqualified".

I tried setting elementFormDefault="unqualified" in the schema section of my wsdl, but the code sent by soap4r remained the same. Please contact me if you would like further info.

Thanks!

Greg

Change History

07/13/05 23:05:56 changed by nahi

  • priority changed from normal to high.
  • milestone changed from undefined to 1.5.5.

07/15/05 09:55:57 changed by nahi

  • status changed from new to assigned.

Sorry for late response.

I confirmed that it's a bug of soap4r. Soap4r does not handle qualified/unqualified correctly at this time. I'm looking into how I can fix it. Please wait for a few more days.

07/18/05 14:54:19 changed by nahi

  • status changed from assigned to closed.
  • resolution set to fixed.

(In [1580]) local element qualify/unqualify control. handles elementFormDefault and form in WSDL. closes #119. attributeFormDefault should be supported soon.

05/15/06 19:29:32 changed by anonymous

aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr aolfr