[NUSOAP/PHP] array parameter

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RickyHeijnen
  • Registratie: Maart 2005
  • Laatst online: 30-04 09:02
Ik ben bezig een API in mekaar te zetten dmv NuSoap. Nu wil ik een array meezenden als input-parameter, maar op een of andere manier gaat het daar fout...

Nu heb ik het gevoel dat het aan de server-kant mis gaat. Zo ziet mijn bron eruit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$server = new soap_server();
$server->configureWSDL('syncerwsdl', 'urn:mywsdl');
$server->wsdl->schemaTargetNamespace = 'urn:mywsdl';

$server->wsdl->addComplexType(
        'ArrayOfString',
        'complexType',
        'array',
        '',
        'SOAP-ENC:Array',
        array(),
        array(
              array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]')
        ),
        'xsd:string'
);


$server->register('test',
    array('name' => 'xsd:string', 'options' => 'tns:ArrayOfString'),
    array('code' => 'xsd:string', 'message' => 'xsd:string'),
    'urn:mywsdl',
    'urn:mywsdl#test'
);

function test($name, $options = null) {
      return array('code' => '200', 'message' => 'OK');
}
?>


de parameter options is hier een array. Zo heb ik het in elkaar gepuzzeld via een tutorial. Maar zodra ik nu iets vanuit de client wil gaan verzenden weigert hij.. Waarom??.. geen idee, ik krijg gewoon een lege request (lees: geen request).

Zodra ik dan 'tns:ArrayOfString' verander in 'xsd:ArrayOfString' krijg ik de volgende request envelope:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:tns="urn:mywsdl">
   <SOAP-ENV:Body>
      <tns:test xmlns:tns="urn:mywsdl">
         <name xsi:type="xsd:string">apitest2</name>
         <options xsi:type="xsd:ArrayOfString">Array</options>
      </tns:test>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Daar staat de parameter options gewoon als waarde 'Array', en dat moet niet...

Mensen... mensen... mensen... wat doe ik fout :o |:( |:( |:(