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
ou via l'adresse direct sans wsdl :
Mais coté client, quand j'appel ce wsdl avec ma simple fonction (qui contient juste un "return "blabla") me sort ceci :
donc en gros ma méthod ne serait pas défini dans le service.... voici maintenant mon code php :
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)
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 :
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)