Page 1 sur 1

paramètres d'un webservice via soap

Posté : 29 avr. 2013, 13:49
par Ambi
Bonjour,

J'effectue actuellement un stage où l'on me demande d'utiliser des web services apogée et je rencontre un soucie pour l'un d'entre eux. J'utilise soap_client pour faire appel à mon web service mon appel ressemble donc à ceci :
$soapClient = new soapclient($wsdl, array(
                "trace"=>true));
 
$resultat =  $soapClient->__soapCall("recupererListeEtudiants",array($params));


Le soucis vient du $params. Le web service me demande de lui passer des paramètres avec la structure suivante :

Code : Tout sélectionner

<element name="listDiplomes" nillable="true" type="intf:TableauDiplomes"/> <complexType name="TableauDiplomes"> <sequence> <element name="item" type="tns1:EtudiantCritereListeDTO" minOccurs="0" maxOccurs="unbounded"/> </sequence> <complexType name="EtudiantCritereListeDTO"> <sequence> <element name="code" nillable="true" type="xsd:string"/> <element name="listVersion" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType>


J'ai compris la structure car via l'outil soapUI je parviens à passer ma requête en xml. Mon soucis est que je n'arrive pas à la "traduire" en php.

Voici mon tableau de paramètres actuel :
$params = array("_parametres" =>array(
            "listDiplomes" =>array(
                "item"=>array(
                    "code" => $codDip,
                    "listVersion" => array(
                        "item"=>array($codVdi)
                    )
                )
            )
J'ai tenté de parser la requête xml de soapUI directement, le tableau correspond à ceci pour moi mais le webservice me renvoie l'erreur suivante :

Code :
Sélectionner tout - Visualiser dans une fenêtre à part

Code : Tout sélectionner

SoapFault exception: [soapenv:Server.userException] org.xml.sax.SAXException: Found character data inside an array element while deserializing
Je suis sur ce soucis depuis 2jours et je vois vraiment pas où est mon erreur :cry: .

Re: paramètres d'un webservice via soap

Posté : 29 avr. 2013, 15:26
par Ambi
Je fais un petit up et j'en profite pour vous prévenir qu'en regardant la trace de ma requête l'erreur se situe au niveau de item dans listeVersion. En effet le tableau item est transcrit par <listeVersion>Array</listeVersion>

Re: paramètres d'un webservice via soap

Posté : 30 avr. 2013, 01:08
par moogli
Salut

quel est la signature de la méthode recupererListeEtudiants du web service (au pire peux tu montrer le wsdl ?)


@+

Re: paramètres d'un webservice via soap

Posté : 30 avr. 2013, 14:06
par Ambi
Salut, qu'entends tu par signature de la méthode recupererListeEtudiants ?

Re: paramètres d'un webservice via soap

Posté : 30 avr. 2013, 14:09
par Ambiwow
Je voulais te mettre le code du wsdl mais cela considère mon message comme un spam et je ne peux pas le poster :(

Re: paramètres d'un webservice via soap

Posté : 30 avr. 2013, 16:08
par AoSiX
Je voulais te mettre le code du wsdl mais cela considère mon message comme un spam et je ne peux pas le poster :(
Utilises http://pastebin.com/ pour partager le contenu !

Re: paramètres d'un webservice via soap

Posté : 30 avr. 2013, 19:08
par moogli
Je voulais te mettre le code du wsdl mais cela considère mon message comme un spam et je ne peux pas le poster :(
Normal pas d' url avant 5 messages pour éviter le spam ;)


La signature d'une fonction c'est ça déclaration (généralement) par exemple string mafonction(string param1, INT param2) par exemple.

@+

Re: paramètres d'un webservice via soap

Posté : 02 mai 2013, 10:39
par Ambiwow
Voilà le web service

http://pastebin.com/DiicSMPQ
La signature d'une fonction c'est ça déclaration (généralement) par exemple string mafonction(string param1, INT param2) par exemple.
Ah ok merci. Et bien dans ce cas c'est la structure que j'ai posté dans mon premier message :

Code : Tout sélectionner

<complexType name="EtudiantCritereDTO"> <sequence> <element name="annee" nillable="true" type="xsd:string"/> <element name="listDiplomes" nillable="true" type="intf:TableauDiplomes"/> <element name="listEtapes" nillable="true" type="intf:TableauEtapes"/> <element name="codeCollectionVET" nillable="true" type="xsd:string"/> <element name="codeGroupeVET" nillable="true" type="xsd:string"/> <element name="listELP" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="codeCollectionELP" nillable="true" type="xsd:string"/> <element name="codeGroupeELP" nillable="true" type="xsd:string"/> <element name="listEPR" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="listTypeHandicap" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="listSportifHautNiv" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="codeRegimeInscrETP" nillable="true" type="xsd:string"/> <element name="listSitSociale" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="sensEchInter" nillable="true" type="xsd:string"/> <element name="codeEchInter" nillable="true" type="xsd:string"/> <element name="listPaysEchInter" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="listTypeEtabFreq" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="maintienInscrAutreEtab" nillable="true" type="xsd:string"/> <element name="listCentreGestion" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="listComposante" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="listCIP" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> <element name="temValAcquisXP" nillable="true" type="xsd:string"/> <element name="temPartInternational" nillable="true" type="xsd:string"/> <element name="etatThese" nillable="true" type="xsd:string"/> <element name="typeResultat" nillable="true" type="xsd:string"/> <element name="objetResultat" nillable="true" type="xsd:string"/> </sequence> </complexType> <complexType name="TableauDiplomes"> <sequence> <element name="item" type="tns1:EtudiantCritereListeDTO" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="TableauEtapes"> <sequence> <element name="item" type="tns1:EtudiantCritereListeDTO" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType>
EtudiantCritereListeDTO étant comme ceci :

Code : Tout sélectionner

<complexType name="EtudiantCritereListeDTO"> <sequence> <element name="code" nillable="true" type="xsd:string"/> <element name="listVersion" nillable="true" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType>