8768 sujets

Développement web côté serveur, CMS

Salut,

J'essaye de faire un soap_server() (le client fonctionne déjà avec un autre wsdl que celui que j'essaye de créer).
La création de mon soap server fonctionne (je pense) correctement car j'ai accès à sont wsdl

<definitions 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:loco" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:loco">
<types>
<xsd:schema targetNamespace="urn:loco">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
</xsd:schema>
</types>
<message name="getFDLSRequest">
<part name="idfdl" type="xsd:string"/>
</message>
<message name="getFDLSResponse">
<part name="data" type="xsd:string"/>
</message>
<portType name="serverPortType">
<operation name="getFDLS">
<input message="tns:getFDLSRequest"/>
<output message="tns:getFDLSResponse"/>
</operation>
</portType>
<binding name="serverBinding" type="tns:serverPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getFDLS">
<soap:operation soapAction="urn:loco#getFDLS" style="rpc"/>
<input>
<soap:body use="encoded" namespace="urn:loco" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="urn:loco" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="server">
<port name="serverPort" binding="tns:serverBinding">
<soap:address location="http://dev1.locoprice.tourism-it.com/app_dev.php/SoapServer"/>
</port>
</service>
</definitions>

ou via l'adresse direct sans wsdl :
upload/1541168498-56013-capture.png

Mais coté client, quand j'appel ce wsdl avec ma simple fonction (qui contient juste un "return "blabla") me sort ceci :
array(4) { ["faultcode"]=> string(15) "SOAP-ENV:Client" ["faultactor"]=> string(0) "" ["faultstring"]=> string(57) "method 'getFDLS'('getFDLS') not defined in service('' '')" ["detail"]=> string(0) "" }

donc en gros ma méthod ne serait pas défini dans le service.... voici maintenant mon code php :

		$server    = new \soap_server();
		 $server->configureWSDL('server', 'urn:loco');
		 $server->wsdl->schemaTargetNamespace = 'urn:loco';
		$server->register('getFDLS',
		      array('idfdl' => 'xsd:string'),  //parameter
		      array('data' => 'xsd:string'),  //output
		      'urn:loco',   //namespace
		      'urn:loco#getFDLS' //soapaction
		      ); 

		$server->service(file_get_contents("php://input"));
		exit();

On voit pourtant bien que je défini ma méthode getFDLS dans le server... on la voit également dans le wsdl, alors je comprend pas.
Merci pour l'aide apporté !
Modifié par JENCAL (05 Nov 2018 - 10:26)