oui
voilà après déclaration wsdl:
$server->wsdl->addComplexType(
'Customers',
'complexType',
'array',
'all',
'',
array(
array(
'id' => 'xsd:string',
'name_customer' => 'xsd:string',
'url' => 'xsd:string',
'codeimg' => 'xsd:string',
'doc' => 'xsd:string',
)
)
);
sous cette forme et mon service retourne :
$server->register('listCustomers',
array('randomid' => 'xsd:string'),
array('return' => 'tns:Customers'),
'urn:TimeTracker',
'urn:TimeTracker#listCustomers',
'rpc',
'encoded',
'Liste des clients'
);
ça marche très bien avec un client php sous nuSoap et avec java pour les fonctions retournant des variables simple (string). Je n'ai par contre pas réussi encore à ce que mon client java puisse lire le variable complexe
voici le code que j'utilise:
SOAPMappingRegistry smr = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();
smr.mapTypes(Constants.NS_URI_SOAP_ENC,
new QName("urn:TimeTracker", "TimeTracker" ),
Activities.class, beanSer, beanSer);
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI("urn:TimeTracker" );
call.setMethodName("listActivities" );
Vector params = new Vector();
params.addElement(new Parameter("randomid", String.class, this.random, null));
call.setParams(params);
response = call.invoke(this.url, "" );