par
Tintin72 » 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
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();
request.wsdl
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>
request_client.php
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;
}
lorsque je charge la page request_client, php m'affiche:
syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
je n'arrive pas à voir où est l'erreur de syntaxe.
Pour contourner le pb j'ai remplacé les indexes 1,2,3 par a,b,c et là php m'affiche:
1
Je ne comprends pas
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
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
[code]
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]
request.wsdl
[code]
<?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]
request_client.php
[code]
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;
}
[/code]
lorsque je charge la page request_client, php m'affiche:
[quote]
syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
[/quote]
je n'arrive pas à voir où est l'erreur de syntaxe.
Pour contourner le pb j'ai remplacé les indexes 1,2,3 par a,b,c et là php m'affiche:
[quote]
1
[/quote]
Je ne comprends pas :?
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