|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
![]() ![]() Ingénieur développement logiciels Inscription : mai 2002 Messages : 3 725 ![]() |
Bonjour à tous
J'ai déjà développé un webservice soap basique en PHP5, en ce sens que ma fonction retourne un objet simple de type xsd:string. Maintenant j'ai besoin de retourner des données étendues, sous forme XML. Je m'étais naïvement dit que le xml étant du texte, je pouvais le faire contenir dans un type xsd:string... Hé bien non : PHP fait automatiquement un htmlentities() sur le code xml, résultat, ma requête soap est inexploitable Mon WSDL (fait à la main puisque PHP ne propose aucune génération automatique Code xml :
Le code de mon serveur soap, simpliste, pour test : Code php :
Le retour SOAP : Code xml :
Comment faire ? Probablement en modifiant le WSDL, mais je ne vois pas comment, j'ai essayé de plein de manière différente, en faisant un type personnalisé, j'ai précisé que le soap:body ne devait pas être encodé (use="literal"), j'ai tenté de passer un objet SimpleXMLElement à la place d'un texte, mais rien n'y fait... pour toute aide
__________________
Tutoriels sur les UPS, e-commerce, PHP, critiques de livres... Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles. Je n'ai rien à voir avec la société www.ovh.com ! |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() Ingénieur développement logiciels Inscription : mai 2002 Messages : 3 725 ![]() |
Ca y est j'ai trouvé une solution en fin de journée, en me basant sur un wsdl d'un de mes fournisseurs, réalisé en .NET et en utilisant un objet SimpleXMLElement directement, c'est PHP qui le convertira en balises xml comme il faut.
Je poste le détail demain, quand je reprendrai tout ça à tête reposée pour avoir un code propre
__________________
Tutoriels sur les UPS, e-commerce, PHP, critiques de livres... Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles. Je n'ai rien à voir avec la société www.ovh.com ! |
|
|
00
|
|
|
#3 | ||||
![]() ![]() Ingénieur développement logiciels Inscription : mai 2002 Messages : 3 725 ![]() |
Bon, ça marche plus ou moins... Désolé de le dire, mais la gestion de soap est vraiment mal foutue dès qu'on veut faire quelque chose de non trivial...
Je suis parvenu à générer du XML en modifiant ceci dans mon WSDL : Code xml :
Je construis ensuite mon objet à l'aide de la classe SimpleXMLElement, et je retourne donc tel quel. J'obtiens bien une réponse SOAP correctement formée cette fois : Code xml :
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:getBCCInfoResponse><return><commande><ref>280556</ref><acompte>426</acompte><detail><produit><SOAP-ENC:Struct><pid>131210</pid><prix>22</prix><quant>1</quant></SOAP-ENC:Struct><SOAP-ENC:Struct><pid>124590</pid><prix>102.02</prix><quant>1</quant></SOAP-ENC:Struct><SOAP-ENC:Struct><pid>134922</pid><prix>206.99</prix><quant>1</quant></SOAP-ENC:Struct><SOAP-ENC:Struct><pid>128488</pid><prix>95</prix><quant>1</quant></SOAP-ENC:Struct></produit></detail><prixtot>426.01</prixtot></commande></return></SOAP-ENV:getBCCInfoResponse></SOAP-ENV:Body></SOAP-ENV:Envelope> Il me pourrit le code avec des SOAP-ENC:Struct qui viennent de je ne sais où... Le client PHP : Code php :
Enfin, j'ai des doutes sur l'interopérabilité du brol... (quid si j'interroge ce serveur soap avec un client .NET par exemple ? ) Quand je pense qu'à partir d'un webservice écrit en .NET, le client php soap me renvoit le xml sous forme d'une chaîne de caractère, que je n'ai plus qu'à charger avec simplexml_load_string(), c'est si simple... Et ici, en utilisant le même langage (PHP), pour faire la partie serveur, c'est si laborieux !!!
__________________
Tutoriels sur les UPS, e-commerce, PHP, critiques de livres... Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles. Je n'ai rien à voir avec la société www.ovh.com ! |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com