[SOAP]Appel d'une fonction depuis un client de web service

Appel d'une fonction depuis un client de web service [SOAP] - PHP - Programmation

Marsh Posté le 29-10-2009 à 17:54:36    

Bonjour,
 
Je débute dans les web services et je m'arrache déjà les cheveux :pt1cable: , alors avant de devenir chauve, je viens vers vous  :sol:  
 
J'ai un service web qui implémente 2 fonctions définies dans le wsdl et dans la class php correspondante.
 
Lorsque j'appelle $monSoapClient->__getFunctions(), je retrouve bien les 2 fonctions en question, avec les bons retours et les bon paramètres.
 
Mais que j'appelle :

  • $monSoapClient->fonction1 (...)
  • $monSoapClient->fonction2 (...)
  • $monSoapClient->__soapCall('fonction1', array(...))
  • $monSoapClient->__soapCall('fonction2', array(...))

C'est toujours fonction1 qui est évaluée et pas moyen de faire exécuter fonction2  :ouch:  :heink:  :fou:  
 
En l'occurrence, quand j'appelle $monSoapClient->__getLastRequest(), je vois une requête où le nom de la fonction n'apparait jamais (pas de "soapaction" et donc pas de "fonction1" ou "fonction2" dedans); seuls les paramètres, de la fonction que je veux appeler, apparaissent.
 
Si quelqu'un pouvait me dire ce qui pourrait en être la cause ... ce serait su-per gentilll  :jap:

Reply

Marsh Posté le 29-10-2009 à 17:54:36   

Reply

Marsh Posté le 30-10-2009 à 13:08:17    

On peut avoir le code du webservice ?

Reply

Marsh Posté le 02-11-2009 à 08:51:26    

Bonjour Tirkyth et merci pour ton intérêt,
 
Je dois rajouter que ce we, en échangeant  l'ordre des déclarations des 2 fonctions dans le binding, c'était du coup uniquement fonction2 qui s'exécutait, et lorsque je tentais d'appeler fonction1, ça me faisait planter Apache qui redémarrait alors.
 
Voici le code :

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
 xmlns:tns="http://plopInc/Plopservice" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://plopInc/Plopservice">
 
 <wsdl:types>
  <schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
   xmlns:tns="http://plopInc/Plopservice" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
   targetNamespace="http://plopInc/Plopservice">
 
   <simpleType name="EnumerationStatus">
    <xsd:restriction base="xsd:string">
     <xsd:enumeration value="Success" />
     <xsd:enumeration value="Warning" />
     <xsd:enumeration value="Failure" />
    </xsd:restriction>
   </simpleType>
 
   <complexType name="serviceReturn">
    <sequence>
     <element minOccurs="1" maxOccurs="1" name="status"
      type="tns:EnumerationStatus" />
     <element minOccurs="0" maxOccurs="1" name="code" type="xsd:string" />
     <element minOccurs="0" maxOccurs="1" name="message" type="xsd:string" />
    </sequence>
   </complexType>
 
   <!--
    ******************************************************************************
   -->
 
   <complexType name="Contact">
    <sequence>
     <element minOccurs="0" maxOccurs="1" name="id" type="xsd:long" />
     <element minOccurs="1" maxOccurs="1" name="nom" type="xsd:string" />
     <element minOccurs="1" maxOccurs="1" name="prenom" type="xsd:string" />
     <element minOccurs="0" maxOccurs="1" name="listeTelephones"
      type="tns:ListeTelephones" />
    </sequence>
   </complexType>
 
   <complexType name="ListeContacts">
    <sequence>
     <element minOccurs="0" maxOccurs="unbounded" name="Contact"
      nillable="true" type="tns:Contact" />
    </sequence>
   </complexType>
 
   <complexType name="Telephone">
    <sequence>
     <element minOccurs="0" maxOccurs="1" name="libelle" type="xsd:string" />
     <element minOccurs="0" maxOccurs="1" name="numero" type="xsd:string" />
    </sequence>
   </complexType>
 
   <complexType name="ListeTelephones">
    <sequence>
     <element minOccurs="0" maxOccurs="unbounded" name="Telephone"
      nillable="true" type="tns:Telephone" />
    </sequence>
   </complexType>
 
   <!--
    ******************************************************************************
   -->
 
   <element name="SearchContactResponse">
    <complexType>
     <sequence>
      <element minOccurs="1" maxOccurs="1" name="serviceReturn"
       type="tns:serviceReturn" />
      <element minOccurs="0" maxOccurs="1" name="listeContacts"
       type="tns:ListeContacts" />
     </sequence>
    </complexType>
   </element>
 
   <element name="UpdateContactResponse">
    <complexType>
     <sequence>
      <element minOccurs="1" maxOccurs="1" name="serviceReturn"
       type="tns:serviceReturn" />
      <element minOccurs="0" maxOccurs="1" name="contact" type="tns:Contact" />
     </sequence>
    </complexType>
   </element>
 
  </schema>
 </wsdl:types>
 
 <!--
  ******************************************************************************
 -->
 
 <wsdl:message name="SearchContactIn">
  <part name='idUser' type='xsd:string' />
 </wsdl:message>
 <wsdl:message name="SearchContactOut">
  <wsdl:part name="parameters" element="tns:SearchContactResponse" />
 </wsdl:message>
 
 <wsdl:message name="UpdateContactIn">
  <part name='idUser' type='xsd:string' />
  <part name='contact' type='tns:Contact' />
 </wsdl:message>
 <wsdl:message name="UpdateContactOut">
  <wsdl:part name="parameters" element="tns:UpdateContactResponse" />
 </wsdl:message>
 
 <!--
  ******************************************************************************
 -->
 
 <wsdl:portType name="PlopService">
  <wsdl:operation name="SearchContact">
   <wsdl:input message="tns:SearchContactIn" />
   <wsdl:output message="tns:SearchContactOut" />
  </wsdl:operation>
 
  <wsdl:operation name="UpdateContact">
   <wsdl:input message="tns:UpdateContactIn" />
   <wsdl:output message="tns:UpdateContactOut" />
  </wsdl:operation>
 </wsdl:portType>
 
 <!--
  ******************************************************************************
 -->
 
 <wsdl:binding name="PlopServiceSOAPBinding" type="tns:PlopService">
  <wsdlsoap:binding style="document"
   transport="http://schemas.xmlsoap.org/soap/http" />
 
  <wsdl:operation name="SearchContact">
   <wsdlsoap:operation soapAction="http://plopInc/Plopservice/SearchContact"
    style="document" />
   <wsdl:input>
    <wsdlsoap:body use="literal" namespace="http://plopInc/Plopservice" />
   </wsdl:input>
   <wsdl:output>
    <wsdlsoap:body use="literal" namespace="http://plopInc/Plopservice" />
   </wsdl:output>
  </wsdl:operation>
 
  <wsdl:operation name="UpdateContact">
   <wsdlsoap:operation soapAction="http://plopInc/Plopservice/UpdateContact"
    style="document" />
   <wsdl:input>
    <wsdlsoap:body use="literal" namespace="http://plopInc/Plopservice" />
   </wsdl:input>
   <wsdl:output>
    <wsdlsoap:body use="literal" namespace="http://plopInc/Plopservice" />
   </wsdl:output>
  </wsdl:operation>
 
 </wsdl:binding>
 
 <wsdl:service name="PlopServiceService">
  <wsdl:port name="PlopService" binding="tns:PlopServiceSOAPBinding">
   <wsdlsoap:address location="http://127.0.0.1/PlopService/PlopService.php" />
  </wsdl:port>
 </wsdl:service>
 
</wsdl:definitions>

Reply

Marsh Posté le 02-11-2009 à 10:06:00    

Bon malheureusement, je suis comme toi, très débutant dans le domaine.
 
Moi j'ai juste eu à en utiliser quelques fois, sans avoir ce problème.
 
Comme je n'arrive pas du tout à savoir ce qui peut clocher, je te conseille, si ce n'est déjà fait, de tester ton web service avec http://www.codeplex.com/WebserviceStudio .
 
Si il se comporte comme tu le souhaites, dans ce cas c'est que ça vient du code PHP et dans ce cas je t'invite à poster ton vrai code PHP :)

Reply

Marsh Posté le 02-11-2009 à 12:01:11    

j'y cours et je reviens !!! merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed