Re: [SOAP] Re: Java/Oracle server, PHP 5.1.2 client, array of complexTypes, Deserializer error
| From: | Peter Guy | Date: | Wed, 18 Jan 2006 23:30:09 +0000 |
| Subject: | Re: [SOAP] Re: Java/Oracle server, PHP 5.1.2 client, array of complexTypes, Deserializer error | ||
| References: | 1 2 3 4 | Groups: | php.soap |
| Request: | Send a blank email to php-soap+get-2084@lists.php.net to get a copy of this message | ||
"Roger Roelofs" <rer@datacompusa.com> wrote in message
news:7C9B0337-6BF5-42E3-B6F9-3F3BDEEB8B59@datacompusa.com...
> Peter,
>
> On Jan 18, 2006, at 2:44 PM, Peter Guy wrote:
>
> > Thanks for the clarification, Dmitry.
> >
> > I see that it is legal to type a SOAP array the way that PHP does
> > it, but I
> > don't think it's the right way to do it. :-)
> >
> > The problem is, how will the SOAP server with which I'm dealing
> > have any
> > knowledge of the "type derived there from"? Unless it's written in
> > PHP, it
> > doesn't necessarily parse requests against the schema in the WSDL,
> > so it
> > likely won't have any knowledge of that derived type.
> I don't know anything about your setup, but, doesn't the server
> maintain the wsdl file? If your client is using a wsdl file you
> created, just change the wsdl file to like this...
>
> <xsd:element name="ArrayOfWhatever" type="soapenc:Array" />
>
> where the namespaces are...
> xmlns:xsd='http://www.w3.org/2001/XMLSchema'
>
> xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
>
> hth
> --
> Roger Roelofs web www.datacompusa.com
> Datacomp Appraisal Services Email rer@datacompusa.com
> 3215 Eaglecrest Drive, NE
> Grand Rapids, MI 49525-4593
Do you mean use an element rather than a complexType to define the array?
Currently, my WSDL defines an array thusly (this is for an integer array):
<complexType name="ArrayOfint"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<complexContent>
<restriction base="SOAP-ENC:Array">
<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:int[]"/>
</restriction>
</complexContent>
</complexType>
And a message involving that array is defined like so:
<message name="EchoIntsRequest">
<part name="INTS" type="ns1:ArrayOfint"/>
</message>
Do you mean, change the complexType name="ArrayOfInts" to an element named
"ArrayOfInts" of type "SOAP-ENC:Array"?
I've tried something similar, which resulted in PHP using a "struct[]" type,
or something to that effect, in the request.
-Peter