Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
question de débutant sur les services web et zf.
Je dois accéder à un fichier WSDL définissant les services web SOAP accessible à une URL donnéee soit :
http://nom.domaine.fr/rep/nom
avec un identifiant : mon_id
et un mot de passe : mot_de_passe
Dois-je utiliser Zend_XmlRpc ou y-a-t-il d'autres modules ?
Si quelqu'un a un lien vers un tuto ou un bout de code pour démarrer...
Merci d'avance,
fred
Hors ligne
Bonjour,
J'ai pas regardé sur le ZF, mais XML-RPC c'est pas du "vrai" webservice avec soap et tout le reste, c'est des webservices light avec un protocole plus simple.
Si tu veux faire du webservice avec SOAP et des WSDL, il faut regarder du coté de soap dans PHP : http://www.php.net/soap.
Je ne sais pas si tu veux consommer un service ou le créer (faire le client ou le serveur).
Pour le serveur je te propose le bout de code suivant :
<?php function Add($x,$y) { return $x+$y; } $server = new SoapServer("./add.wsdl"); $server->addFunction("Add"); $server->handle(); ?>
avec le add.wsdl
<?xml version="1.0" ?> <definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:si="http://soapinterop.org/xsd" xmlns:tns="http://localhost/Tutoriaux/Soap/add.wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://localhost/Tutoriaux/Soap/add.wsdl"> <types> <xsd:schema targetNamespace="http://localhost/Tutoriaux/Soap/add.wsdl"> <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" /> <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" /> </xsd:schema> </types> <message name="AddRequest"> <part name="x" type="xsd:double" /> <part name="y" type="xsd:double" /> </message> <message name="AddResponse"> <part name="result" type="xsd:double" /> </message> <portType name="TestServicePortType"> <operation name="Add"> <input message="tns:AddRequest" /> <output message="tns:AddResponse" /> </operation> </portType> <binding name="TestServiceBinding" type="tns:TestServicePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="Add"> <soap:operation soapAction="Add" style="rpc" /> <input> <soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="TestService"> <port name="TestServicePort" binding="tns:TestServiceBinding"> <soap:address location="http://localhost/Tutoriaux/Soap/soap_server.php"/> </port> </service> </definitions>
(hein ? mais non c'est pas lourd )
Je n'ai jamais consommé de webservice en PHP, je n'ai pas de code de client sous la main, mais il doit y avoir pas mal d'exemples à l'adresse http://www.php.net/soap.
A+, Philippe
Hors ligne
On ne peut considérer le XML_RPC comme du "SOAP Light". Disons que le SOAP est beaucoup plus populaire que le XML_RPC ou d'autres protocoles. Les deux protocoles sont vraiment distincts.
La nouveauté dans PHP5 est que le soap vient en natif, Ainsi il compte parmi les composants du SPL.
Dans ce sens, je ne pense pas qu'on trouvera un jour un composant SOAP dans ZF. Je ne vois pas l'intérêt de réecrire des fonctionnalités existante. L'implémentation au niveau de SPL est assez intéressante et continue à évoluer, ainsi elle prend en compte le SOAP 1.1 / 1.2 et les dernières spécifications WSDL. Même si tout n'est supporté actuellement, mais je pense que le développement continuera plutôt de ce côté.
Hors ligne
Merci messieurs,
je vais donc me lancer dans cette voie. Nul doute que vous aurez de mes nouvelles sous peu
La bonne soirée,
fred
Hors ligne
Pour information, je viens de voir qu'il y a dans l'incubateur Zend_Soap_Server Component Proposal.
Mais d'après Matthew Weier O'Phinney, on ne trouvera pas ce composant avant la 1.0. Rien du côté client, donc j'imagine, comme le dit fincom, que les fonctionnalités natives de PHP doivent suffire.
voilà, voilà,
fred
Hors ligne