Chcę przesłać tablicę asjocjacyjną protokołem SOAP w usłudze za pomocą nuSoap
udało mi się po omacku wystawić tablicę dwuwymiarową :
<?
require_once('nusoap.php');
$namespace = "http://localhost/soap/s1.php";
$server = new soap_server;
$server->configureWSDL("StanyElementow");
$server->wsdl->schemaTargetNamespace = $namespace;
$server->wsdl->addComplexType('MyComplexType','complexType','array','all',
array( 'ID' => array('name' => 'ID','type' => 'xsd:int'), 'stan' => array('name' => 'stan','type' => 'xsd:int')));
$server->wsdl->addComplexType('tablica','MyComplexType','array','','SOAP-ENC:Array',
array( 'name'=>'oprawa','type'=>'tns:MyComplexType'),'tns:MyComplexType');
$server->register(
'getStanyElem',
array('name'=>'xsd:string'), array('return'=>'tns:tablica'), $namespace,
false,
'rpc',
'encoded',
'stan 0 oznacza ok , powyzej -cos innego');
function getStanyElem($name) {
$elem[0][0]=1;
$elem[0][1]=10;
$elem[1][0]=2;
$elem[1][1]=11;
$elem[2][0]=5;
$elem[2][1]=1;
$elem[3][0]=7;
$elem[4][1]=1;
return $elem;
}
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ?
$HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA);
?>
teraz działa w ten sposób:
.....
<item xsi:type="xsd:">
<item xsi:type=i"xsd:int">
1
</item>
<item xsi:type=i"xsd:int">
10
</item>
</item>
<item xsi:type="xsd:">
<item xsi:type=i"xsd:int">
2
</item>
<item xsi:type=i"xsd:int">
11
</item>
</item>
.....
jest to zwykla tablica ale nie znamy ani typu ani nazwy pierwszych itemów. Czy nie powinno być ?
<elem xsi:type=i"xsd:int">
2
</item>
<item xsi:type=i"xsd:int">
11
</item>
Dobra ale ja chciałem przesłać tablicę
$elem= array('1'=>0, '2'=>0, '3'=>1, '4'=>0, '8'=>1 );
i domyślam się powinno wygladac:
<elem xsi:type=i"xsd:int">
<ID xsi:type=i"xsd:int">
2
</iID>
<stan xsi:type=i"xsd:int">
11
</item>
(..)lub coś w ten deseń...
Czuję że szkopół tkwi w deklaracji typów complexType tylko nie mam pojęcia jak to zrobić .