Skip Menu |

This queue is for tickets about the SOAP-WSDL CPAN distribution.

Report information
The Basics
Id: 42179
Status: resolved
Priority: 0/
Queue: SOAP-WSDL

People
Owner: Nobody in particular
Requestors: adam.prime [...] utoronto.ca
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 2.00.06
Fixed in: (no value)



Subject: Problem deserializing SOAP messages that contain only a simpleType
Attached are an example WSDL file, and a tgz that contains all the files need for a test that fails because of this problem. You should be able to extract it into the directory created when you extract the latest SOAP::WSDL distribution. DESCRIPTION: If you have a WSDL that defines your messages are purely simple types like this for example: <types> <xsd:schema elementFormDefault="qualified" targetNamespace="http://web01-dev/prime"> <xsd:element name="PrimeRequest" type="xsd:integer"/> <xsd:element name="PrimeResponse" type="xsd:boolean"/> </xsd:schema> </types> <message name="PrimeRequest"> <part name="parameters" element="tns:PrimeRequest"/> </message> <message name="PrimeResponse"> <part name="parameters" element="tns:PrimeResponse"/> </message> Then SOAP::WSDL has problems deserializing the requests. The request is serialized correctly, but when the server attempts to deserialize the request the value is lost. This goes across the wire: <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" Show quoted text
><SOAP-ENV:Body><PrimeRequest
xmlns="http://web01-dev/prime">7</PrimeRequest></SOAP-ENV:Body></SOAP-ENV:Envelope> but on the server the resulting MyElements::PrimeRequest object will not produce anything when you call $body->get_value() You can work around this by using complextypes with a single element instead, but that isn't optimal IMO.
Subject: prime.st.wsdl
Download prime.st.wsdl
application/octet-stream 1.7k

Message body not shown because it is not plain text.

Subject: SOAP-WSDL-t.tar.gz
Download SOAP-WSDL-t.tar.gz
application/x-gzip 2.7k

Message body not shown because it is not plain text.

Subject: Re: [rt.cpan.org #42179] Problem deserializing SOAP messages that contain only a simpleType
Date: Wed, 07 Jan 2009 19:49:56 +0100
To: bug-SOAP-WSDL [...] rt.cpan.org
From: Martin Kutter <martin.kutter [...] fen-net.de>
Hi Adam, this is a limitation in the current SOAP::WSDL implementation. SOAP::WSDL follows (and requires) the "document/literal wrapped" style, which, though nowhere specified, provides best interoperability. See http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ for details. As the WS-I basic profile does not mandate "document/literal wrapped", but just "document/literal" (or "rpc/literal"), it's still a bug, though a minor one: SOAP::WSDL is not particularly well suited for web services that simple - SOAP::Lite provides unbeaten simplicity for accessing (and serving) web services using simple data structures. Martin Am Dienstag, den 06.01.2009, 10:45 -0500 schrieb Adam Prime via RT: Show quoted text
> Tue Jan 06 10:45:04 2009: Request 42179 was acted upon. > Transaction: Ticket created by APRIME > Queue: SOAP-WSDL > Subject: Problem deserializing SOAP messages that contain only a simpleType > Broken in: 2.00.06 > Severity: Important > Owner: Nobody > Requestors: adam.prime@utoronto.ca > Status: new > Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=42179 > > > > Attached are an example WSDL file, and a tgz that contains all the files > need for a test that fails because of this problem. You should be able > to extract it into the directory created when you extract the latest > SOAP::WSDL distribution. > > DESCRIPTION: > > If you have a WSDL that defines your messages are purely simple types > like this for example: > > <types> > <xsd:schema elementFormDefault="qualified" > targetNamespace="http://web01-dev/prime"> > <xsd:element name="PrimeRequest" type="xsd:integer"/> > <xsd:element name="PrimeResponse" type="xsd:boolean"/> > </xsd:schema> > </types> > > <message name="PrimeRequest"> > <part name="parameters" element="tns:PrimeRequest"/> > </message> > <message name="PrimeResponse"> > <part name="parameters" element="tns:PrimeResponse"/> > </message> > > Then SOAP::WSDL has problems deserializing the requests. The request is > serialized correctly, but when the server attempts to deserialize the > request the value is lost. > > This goes across the wire: > > <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> ><SOAP-ENV:Body><PrimeRequest
> xmlns="http://web01-dev/prime">7</PrimeRequest></SOAP-ENV:Body></SOAP-ENV:Envelope> > > but on the server the resulting MyElements::PrimeRequest object will not > produce anything when you call > > $body->get_value() > > You can work around this by using complextypes with a single element > instead, but that isn't optimal IMO. >
Perhaps just a documentation update is in order then. I'm not going to use SOAP::Lite because it seems to have passed it's expiry date (or something) Thanks.
Subject: Re: [rt.cpan.org #42179] Problem deserializing SOAP messages that contain only a simpleType
Date: Wed, 07 Jan 2009 20:44:45 +0100
To: bug-SOAP-WSDL [...] rt.cpan.org
From: Martin Kutter <martin.kutter [...] fen-net.de>
Actually, just a simple bug in the MessageParser. Fixed in rev760 in SVN Martin Am Mittwoch, den 07.01.2009, 13:58 -0500 schrieb Adam Prime via RT: Show quoted text
> #42179] Problem deserializing SOAP messages that contain only a > simpleType
Fixed in 2.00.07