Hogyan adjak vissza tömböt SOAP webszolgáltatásból?
PHP5-ben kell SOAP webszolgáltatást irnom. Egy olyan tagfüggvényt kell irnom, ami egy tömböt ad vissza. Ime a
WSDL fájl. PHP-ben irtam egy klienst, úgy működik, ahogyan működnie kell (próba). Vagyis a kliens egy tömböt kap vissza. Ha .NET-ben irok hozzá egy klient, akkor egy tömb helyett egy objekumot kapok vissza, amivel semmit sem lehet kezdeni, mert nem kollekció.
.NET-ben elkészitettem egy hasonló webszolgáltatást, ami kicsit más WSDL fájl-t generált.
A lényeg talán az, hogy a .NET a tömb adattipust igy definiálta a WSDL-ben:C# nyelven készitettem egy egyszerű konzolos alkalmazást, hogy kipróbljam a .NET-es webszolgáltatást. String[] array-t kapott vissza, ami jó. Ugyanezt a .NET-es webszolgáltatást is meghivtam PHP5-ből, de egy objektumot kaptam vissza array helyett:Persze modhatjátok azt is, hogy el lehet érni a tömböt PHP-ből igy:Ez persze működik is, de miért nem kapok vissza csak egy Array-t? Ha a C# kliens egy tömböt kap vissza, akkor a PHP miért kap vissza mást?
A kérdésem tehát a köv.: Hogyan módositsam a WSDL fájlt, hogy PHP-ből és .NET/Java is egy array-t kapjak vissza. Vagy mit kéne csinálnom PHP-ben?
Előre is köszönöm az ötleteket.
■ WSDL fájl. PHP-ben irtam egy klienst, úgy működik, ahogyan működnie kell (próba). Vagyis a kliens egy tömböt kap vissza. Ha .NET-ben irok hozzá egy klient, akkor egy tömb helyett egy objekumot kapok vissza, amivel semmit sem lehet kezdeni, mert nem kollekció.
.NET-ben elkészitettem egy hasonló webszolgáltatást, ami kicsit más WSDL fájl-t generált.
A lényeg talán az, hogy a .NET a tömb adattipust igy definiálta a WSDL-ben:
<s:element name="HelloWorldResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="tns:ArrayOfString" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfString">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" />
</s:sequence>
</s:complexType>
stdClass Object ( [HelloWorldResult] => stdClass Object ( [string] => Array(…)))
echo ("ennyi eleme van a tömbnek:" count($ret->HelloWorldResult->string));
A kérdésem tehát a köv.: Hogyan módositsam a WSDL fájlt, hogy PHP-ből és .NET/Java is egy array-t kapjak vissza. Vagy mit kéne csinálnom PHP-ben?
Előre is köszönöm az ötleteket.
Nem biztos...