Récupérer un array via un webservice ?
Posté : 18 juin 2007, 09:07
Bonjour,
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
request.wsdl
request_client.php
lorsque je charge la page request_client, php m'affiche:
Pour contourner le pb j'ai remplacé les indexes 1,2,3 par a,b,c et là php m'affiche:
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
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