Je galère depuis plusieurs jours en essayant de mettre sur pied un webservice en php
dont la fonction retourne un array.
Voici le code:
request_service.php
Code : Tout sélectionner
class SendData
{
function reqFunc()
{
$arr = array(1=> "Coucou", 2=> "hello", 3=> 51);
return $arr;
}
}
$server = new SoapServer('http://localhost/service/request.wsdl',
array('trace'=> 1,'soap_version'=> SOAP_1_1));
$server->setClass('SendData');
$server->handle();
Code : Tout sélectionner
<?xml version="1.0"?>
<definitions name="RequestService"
targetNamespace="http://localhost/service/request.wsdl"
xmlns:tns="http://localhost/service/request.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:typens="http://localhost/service/request.wsdl"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="reqFuncRequest"/>
<message name="reqFuncResponse">
<part name="return" type="xsd:anyType"/>
</message>
<portType name="RequestServicePortType">
<operation name="reqFunc">
<input message="reqFuncRequest"/>
<output message="reqFuncResponse"/>
</operation>
</portType>
<binding name="RequestServiceBinding" type="tns:RequestServicePortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="reqFunc">
<soap:operation soapAction="http://localhost/service/request.wsdl"/>
<input>
<soap:body use="encoded" namespace="urn:RequestService"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="urn:RequestService"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="RequestService">
<documentation>Description du service web</documentation>
<port name="RequestServicePort" binding="tns:RequestServiceBinding">
<soap:address location="http://localhost/service/request_service.php"/>
</port>
</service>
</definitions>
Code : Tout sélectionner
try{
$client = new SoapClient('http://localhost/service/request.wsdl',
array('trace'=> 1,'soap_version'=> SOAP_1_1));
$client->__soapCall('reqFunc', array());
echo $client>1;
echo $client->2;
echo $client->3;
}
catch(SoapFault $fault)
{
echo $fault;
}
je n'arrive pas à voir où est l'erreur de syntaxe.syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
Pour contourner le pb j'ai remplacé les indexes 1,2,3 par a,b,c et là php m'affiche:
Je ne comprends pas1
l'erreur vient-elle de la façon de faire passer le array ou de la description de la fonction dans le fichier wsdl ou des deux ?????
Si quelqu'un pouvait m'expliquer ça m'aiderait beaucoup.
Merci d'avance