paramètres d'un webservice via soap

Ambi
Invité n'ayant pas de compte PHPfrance

29 avr. 2013, 13:49

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: .

Ambi
Invité n'ayant pas de compte PHPfrance

29 avr. 2013, 15:26

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>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 avr. 2013, 01:08

Salut

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


@+
Il en faut peu pour être heureux ......

Ambi
Invité n'ayant pas de compte PHPfrance

30 avr. 2013, 14:06

Salut, qu'entends tu par signature de la méthode recupererListeEtudiants ?

Petit nouveau ! | 2 Messages

30 avr. 2013, 14:09

Je voulais te mettre le code du wsdl mais cela considère mon message comme un spam et je ne peux pas le poster :(

Eléphant du PHP | 314 Messages

30 avr. 2013, 16:08

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 !
Cordialement,
Julien - http://laravel.fr/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 avr. 2013, 19:08

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.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

02 mai 2013, 10:39

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>