Probleme Webservice Soap avec php5

psitouse Messages postés 3 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006 - 21 sept. 2006 à 10:49
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 21 sept. 2006 à 13:02
Bonjour,

Je souhaiterai utiliser le webservice decrit ci-dessous. Mon problème est que je ne sais pas vraiment la syntaxe à utilisé pour appeller ma fonction.

Fichier WSDL

    <wsdl:definitions targetNamespace= "http://www.premiumconsulting.fr/">
    <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://www.premiumconsulting.fr/">
    <s:element name="simulate">
    <s:complexType>
    <s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="group" type="tns:Group"/>
<s:element minOccurs="1" maxOccurs="1" name="salary" type="s:decimal"/>
<s:element minOccurs="1" maxOccurs="1" name="birthDate" type="s:dateTime"/>
</s:sequence>
</s:complexType>
</s:element>
    <s:simpleType name="Group">
    <s:restriction base="s:string">
<s:enumeration value="Executive"/>
<s:enumeration value="NonExecutive"/>
</s:restriction>
</s:simpleType>
    <s:element name="simulateResponse">
    <s:complexType>
    <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="simulateResult" type="tns:SimulationResult"/>
</s:sequence>
</s:complexType>
</s:element>
    <s:complexType name="SimulationResult">
    <s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Ages" type="tns:ArrayOfInt"/>
<s:element minOccurs="0" maxOccurs="1" name="SSRates" type="tns:ArrayOfDecimal"/>
<s:element minOccurs="0" maxOccurs="1" name="ARRCORates" type="tns:ArrayOfDecimal"/>
<s:element minOccurs="0" maxOccurs="1" name="AGIRCRates" type="tns:ArrayOfDecimal"/>
<s:element minOccurs="0" maxOccurs="1" name="totalRates" type="tns:ArrayOfDecimal"/>
</s:sequence>
</s:complexType>
    <s:complexType name="ArrayOfInt">
    <s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="int" type="s:int"/>
</s:sequence>
</s:complexType>
    <s:complexType name="ArrayOfDecimal">
    <s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="decimal" type="s:decimal"/>
</s:sequence>
</s:complexType>
</s:schema>
</wsdl:types>
    <wsdl:message name="simulateSoapIn">
<wsdl:part name="parameters" element="tns:simulate"/>
</wsdl:message>
    <wsdl:message name="simulateSoapOut">
<wsdl:part name="parameters" element="tns:simulateResponse"/>
</wsdl:message>
    <wsdl:portType name="AnnuitySimulatorSoap">
    <wsdl:operation name="simulate">
<wsdl:input message="tns:simulateSoapIn"/>
<wsdl:output message="tns:simulateSoapOut"/>
</wsdl:operation>
</wsdl:portType>
    <wsdl:binding name="AnnuitySimulatorSoap" type="tns:AnnuitySimulatorSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="simulate">
<soap:operation soapAction="http://www.premiumconsulting.fr/simulate" style="document"/>
    <wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
    <wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
    <wsdl:binding name="AnnuitySimulatorSoap12" type="tns:AnnuitySimulatorSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="simulate">
<soap12:operation soapAction="http://www.premiumconsulting.fr/simulate" style="document"/>
    <wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
    <wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
    <wsdl:service name="AnnuitySimulator">
    <wsdl:port name="AnnuitySimulatorSoap" binding="tns:AnnuitySimulatorSoap">
<soap:address location="http://82.229.44.176/AnnuitySimulator/AnnuitySimulator.asmx"/>
</wsdl:port>
    <wsdl:port name="AnnuitySimulatorSoap12" binding="tns:AnnuitySimulatorSoap12">
<soap12:address location="http://82.229.44.176/AnnuitySimulator/AnnuitySimulator.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Le type de requette demandée :
POST /AnnuitySimulator/AnnuitySimulator.asmx HTTP/1.1
Host: 82.229.44.176
Content-Type: text/xml; charset =utf-8
Content-Length: length
SOAPAction: "http://www.premiumconsulting.fr/simulate"

<?xml version= "1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<simulate xmlns="http://www.premiumconsulting.fr/">
<group>Executive or NonExecutive</group>
<salary>decimal</salary>
dateTime
</simulate>
</soap:Body>
</soap:Envelope>

Mon code :

$client = new SoapClient("http://82.229.44.176/AnnuitySimulator/AnnuitySimulator.asmx?WSDL");

$Reponse = $client-> __soapCall("simulate",array('group'=>"Executive",'salary'=>"30000",'birthDate'=>"01/06/1960"));

Aucune valeur ne me revient (valeurs des tableau nulles).
Je ne vois pas ce qui cloche ?

Merci de vos réponses et désolé pour la longueur du post.

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 sept. 2006 à 11:19
Hello,

et il y a quoi dans la fonction simulate () ?
0
psitouse Messages postés 3 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006
21 sept. 2006 à 11:39
Hello malalam,

Pour la fonction, je ne sais pas.
Je pensais que je pouvais me passer de connaitre sa structure comme je connais ses arguments.

Mais je crois que ça serait utile de me renseigner, car en testant le webservice par http://www.soapclient.com/soapclient,
je me suis rendu compte que le format de la date est un peu spécial (ex : 2001-05-07T02:12:12Z).

En fait mon problème est de savoir quelle syntaxe utlisé :
- Soit l'exemple de mon code.
- Ou dans un formulaire post avec des parametres bien précis
- Ou intégrer dans mon code, un header avec le format demandé ( <?xml version="1.0" encoding="utf-8"?> ...)

Je ne sais pas vraiment comment intéroger le webservice et de quelle manniere envoyer ma requete.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 sept. 2006 à 12:45
Ben en théorie oui, on s'en fout, mais si ça ne marche pas...peut-être en effet que les paramètres ne sont pas bons.
En pratique, ta méthode est bonne.
Mais, comment sais-tu qu'elle ne renvoie rien? Comment le détectes-tu ?
0
psitouse Messages postés 3 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 21 septembre 2006
21 sept. 2006 à 12:55
Voila ce que je recupere dans ma variable. Mais si tu me dis, qu 'en theorie, ma méthode est bonne, je chercherai dans mes parametres ce qui ne va pas.

stdClass Object
(
    [simulateResult] => stdClass Object
        (
            [Ages] => stdClass Object
                (
                    [int] => Array
                        (
                            [0] => 60
                            [1] => 61
                            [2] => 62
                            [3] => 63
                            [4] => 64
                            [5] => 65
                        )



                )




            [SSRates] => stdClass Object
                (
                    [decimal] => Array
                        (
                            [0] => 0
                            [1] => 0
                            [2] => 0
                            [3] => 0
                            [4] => 0
                            [5] => 0
                        )




                )




            [ARRCORates] => stdClass Object
                (
                    [decimal] => Array
                        (
                            [0] => 0
                            [1] => 0
                            [2] => 0
                            [3] => 0
                            [4] => 0
                            [5] => 0
                        )




                )




            [AGIRCRates] => stdClass Object
                (
                    [decimal] => Array
                        (
                            [0] => 0
                            [1] => 0
                            [2] => 0
                            [3] => 0
                            [4] => 0
                            [5] => 0
                        )




                )




            [totalRates] => stdClass Object
                (
                    [decimal] => Array
                        (
                            [0] => 0
                            [1] => 0
                            [2] => 0
                            [3] => 0
                            [4] => 0
                            [5] => 0
                        )




                )




        )




)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 sept. 2006 à 13:02
Ah, donc tu récupères quelquechose. C'est juste que les propriétés de l'objet sont vides (à part les âges?)
Bref, la requête passe, mais tu ne récupères pas ce que tu veux.
A mon avis, ouais, cherches dans les paramètres.Surtout que "Ages" est rempli.
0
Rejoignez-nous