Re: [SOAP] Array in PEAR::SOAP

From: Date: Tue, 18 Jun 2002 20:56:54 +0000
Subject: Re: [SOAP] Array in PEAR::SOAP
References: 1 2  Groups: php.soap 
Request: Send a blank email to php-soap+get-131@lists.php.net to get a copy of this message
Ok, I saw the server_round2_base.php, echoStructArray and a part of the problem was resolved, but I have WSDL, so I have my namespaces (I think), I made: $arr = array(); for( . . . ) { $arr[] = new SOAP_Value("news", "SOAPStruct", array( new SOAP_Value('id', 'int', $...), new SOAP_Value('title', 'string', $...), new SOAP_Value('audiorm', 'string', $...) )); } return new SOAP_Value("NewsList", "Array", $arr); // If I use return $arr; I will lost the name 'NewsList' And the WSDL is: <types> <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:AldiaService"> <xsd:complexType name="news"> <xsd:all> <xsd:element name="id" type="xsd:int"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="audiorm" type="xsd:string"/> </xsd:all> </xsd:complexType> <xsd:complexType name="AldiaListaResultArray"> <xsd:complexContent> <xsd:restriction base="soapenc:Array"> <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:news[]"/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:schema> </types> <message name="ListarNoticiasResponse"> <part name="NewsList" type="typens:AldiaListaResultArray"/> </message> <portType name="AldiaServicePort"> <operation name="aldialista"> <input message="typens:ListarNoticias"/> <output message="typens:ListarNoticiasResponse"/> </operation> </portType> and with the new changes the Response is: <ns6:aldialistaResponse> <NewsList xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="si:SOAPStruct[6]" SOAP-ENC:offset="[0]"> <news xsi:type="si:SOAPStruct"> <id xsi:type="xsd:int">4980</id> <title xsi:type="xsd:string">....</title> <audiorm xsi:type="xsd:string">...</audiorm> </news> <news xsi:type="si:SOAPStruct"> ..... I can change the line $arr[] = new SOAP_Value("news", "SOAPStruct", array( for $arr[] = new SOAP_Value("item", "SOAPStruct", array( What is the best choice, Thanks a lot, Luis "Shane Caraveo" <shane@caraveo.com> wrote in message news:3D0F890B.1020100@caraveo.com... > Luis Barrios wrote: > > Hi, > > I have a services with PEAR::SOAP, the response is a array of struct but I > > think that the response is not correct: > > > > <ns6:newslistResponse> > > <NewsList xsi:type="SOAP-ENC:Array" > > SOAP-ENC:arrayType="xsd:anyType[6]" > > SOAP-ENC:offset="[0]"> > > > > > I think that SOAP-ENC:arrayType="xsd:anyType[3]" it is not correct, > > maybe something like > > SOAP-ENC:arrayType="xsd:news[3]" > > and the element <news> something like: <news xsi:type="......"> > > but I dont know how I can change that in the server-side. > > Please, help me, > > Luis > > There is an example in the server_round2_base.php, echoStructArray. > > 'news' is not in the namespace that the xsd prefix represents, so you > cannot have xsd:news. You have to have your own namespace for the type. > > function getNewsList() > { > $newsList = array(); > $newsItems = getYourNewsList(); > if ($newsItems) { > foreach($newsItems as $item) { > $newsList[] = new > > SOAP_Value('item','{http://yournamespace/}news',$item); > } > return $newsList; > } > > A namespace with be added to the envelope for > http://yournamespace/, and > the arrayType should end up being something like ns1:news[] > > Shane > >

« previous php.soap (#131) next »