IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Configuration Easyphp / SOAP pour Webservice en PHP 5


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 23
    Points : 23
    Points
    23
    Par défaut Configuration Easyphp / SOAP pour Webservice en PHP 5
    Bonjour à tous,

    Je requiers votre aide, car j'ai besoin de trouver rapidement une réponse à "Comment configurer Easyphp pour implémenter des Webservices à l'aide de SOAP et PHP5 ?"

    Ce que j'ai fait jusqu'à présent :

    - télécharger un petit exemple de webservice sur le net pour voir comment cela fonctionne.

    - déposer l'ensemble dans un dossier ./webservice-exemple, dans le dossier ./www d'Easyphp

    - le dossier contient 3 fichiers, index.php, test.php, serveur.wsdl, qui sont respectivement, la page de définition et de présentation des services du serveur, la page d'appel client, et la description WSDL des services.

    - appeler dans le navigateur, l'URL http://127.0.0.1/webservice-exemple/index.php
    >> donnait : "HTTP 500 erreur interne au serveur" après que j'ai décommenté "extension=php_soap.dll" dans php.ini, comme j'ai lu que SOAP était intégré à PHP5 (et redemarré le serveur bien-entendu), avant j'avais un appel à la lib SoapServer qui ne fonctionnait pas
    >> donne après modification de la ligne de déclaration du serveur en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $server = new SoapServer("http://127.0.0.1/webservice-exemple/server.wsdl");
    l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOAP-ENV:ServerBad Request. Can't find HTTP_RAW_POST_DATA
    - appeler dans le navigateur, l'URL http://127.0.0.1/webservice-exemple/test.php
    >> donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Fatal error: Uncaught SoapFault exception:
    [HTTP] Unable to parse URL in C:\Program Files\EasyPHP 2.0b1\www\webservice-exemple\test.php:3
    Stack trace:
    #0 [internal function]: SoapClient->__doRequest('<?xml version="...', '', 'urn:MonWebServi...', 1, 0)
    #1 C:\Program Files\EasyPHP 2.0b1\www\webservice-exemple\test.php(3): SoapClient->__call('hello', Array)
    #2 {main} thrown in C:\Program Files\EasyPHP 2.0b1\www\webservice-exemple\test.php on line 3
    Les 3 fichiers d'exemple :

    - index.php (serveur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
    class MonWebService 
    	{
       	function MonWebService()
       	{
       	}
       	/**
       	 * Dis bonjour...
       	 * @param string $qui
       	 * @return string
       	 */
       	function hello($qui)
       	{
       		return utf8_encode("Bonjour à toi : ".$qui);
       	}
    }
    $server = new SoapServer("server.wsdl");
    $server->setClass("MonWebService");
    $server->handle();
     
     
    print "Ce web service MonWebService contient les méthodes suivantes :<br><ul>";
    $aFuncs = $server->getFunctions();
    for($i=0;$i<sizeof($aFuncs);$i++)
    {
    	print("<li>".$aFuncs[$i]."</li>");
    }
    print "</ul>";
    ?>
    - test.php (client) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    //$client = new SoapClient("server.wsdl");
    $client = new SoapClient("http://127.0.0.1/webservice-exemple/server.wsdl");
    $ret = $client->__call("hello",array('steph'));
    print $ret;
    ?>
    >> J'ai aussi testé la version commenté de ce code, même résultat.

    - server.wsdl (fichier de description WSDL) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?xml version='1.0' encoding='UTF-8'?>
     
    <!-- WSDL file generated by Zend Studio. -->
     
    <definitions name="server" targetNamespace="urn:server" xmlns:typens="urn:server" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
    	<message name="hello">
    		<part name="qui" type="xsd:string"/>
    	</message>
    	<message name="helloResponse">
    		<part name="helloReturn" type="xsd:string"/>
    	</message>
    	<portType name="MonWebServicePortType">
    		<operation name="hello">
    			<documentation>
    				Dis bonjour...
    			</documentation>
    			<input message="typens:hello"/>
    			<output message="typens:helloResponse"/>
    		</operation>
    	</portType>
    	<binding name="MonWebServiceBinding" type="typens:MonWebServicePortType">
    		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    		<operation name="hello">
    			<soap:operation soapAction="urn:MonWebServiceAction"/>
    			<input>
    				<soap:body namespace="urn:server" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</input>
    			<output>
    				<soap:body namespace="urn:server" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</output>
    		</operation>
    	</binding>
    	<service name="serverService">
    		<port name="MonWebServicePort" binding="typens:MonWebServiceBinding">
    			<soap:address location=""/>
    		</port>
    	</service>
    </definitions>

    A priori, le WSDL émane de Zend Studio, donc la conf que j'utilise pour le faire tourner, n'est peut-être pas optimale, mais les contraintes que j'ai, font que je dois me contenter d'easyphp (v2.0.0.0) pour le moment.
    J'ai peut-être aussi fait des boulettes, je ne suis pas exempt d'imperfections. Donc je fais appel à votre aiiiiiiiide.

    Merci d'avance.

    Keev

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Un début de réponse à mon problème :
    http://www.developpez.net/forums/d33...raw_post_data/

    Google est mon ami...

    Je teste et je vous dis.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Côté serveur ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOAP-ENV:ClientBad Request
    Côté client, c'est inchangé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Fatal error: Uncaught SoapFault exception: [HTTP] Unable to parse URL in C:\Program Files\EasyPHP 2.0b1\www\webservice-exemple\test.php:4
    Stack trace:
    #0 [internal function]: SoapClient->__doRequest('<?xml version="...', '', 'urn:MonWebServi...', 1, 0)
    #1 C:\Program Files\EasyPHP 2.0b1\www\webservice-exemple\test.php(4): SoapClient->__call('hello', Array)
    #2 {main} thrown in C:\Program Files\EasyPHP 2.0b1\www\webservice-exemple\test.php on line 4

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    En passant à une version plus récente de Easyphp, la dernière en date, la version 5.3.0, je n'ai plus de problème pour la partie serveur, mais le client ne fonctionne toujours pas, et présente toujours les mêmes erreurs.

    J'ai très nettement l'impression que l'erreur vient de ce qui est configuré dans le fichier server.wsdl
    Je pense qu'il manque une définition d'URL dans cette section du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <service name="serverService">
    	<port name="MonWebServicePort" binding="typens:MonWebServiceBinding">
    		<soap:address location=""/>
    	</port>
    </service>
    Des idées ?

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    En ajoutant l'URL du fichier index.php (serveur), tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <service name="serverService">
    	<port name="MonWebServicePort" binding="typens:MonWebServiceBinding">
    		<soap:address location="http://127.0.0.1/www/webservice-exemple/index.php"/>
    	</port>
    </service>
    L'erreur change pour devenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Fatal error:
    Uncaught SoapFault exception:
    [Client] DTD are not supported by SOAP in C:\Program Files\EasyPHP5.3.0\www\webservice-exemple\test.php:3
    Stack trace:
    #0 C:\Program Files\EasyPHP5.3.0\www\webservice-exemple\test.php(3): SoapClient->__call('hello', Array)
    #1 {main} thrown in C:\Program Files\EasyPHP5.3.0\www\webservice-exemple\test.php on line 3
    Une erreur de DTD... bien !

Discussions similaires

  1. [ASP.NET] Configuration pour webservice
    Par Le-Cortex dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/03/2010, 17h35
  2. Réponses: 0
    Dernier message: 04/12/2009, 14h17
  3. [SOAP]Activer SOAP pour webservice
    Par RaelRiaK dans le forum Services Web
    Réponses: 2
    Dernier message: 05/03/2009, 15h56
  4. [Web Service][SOAP] Appel d'un WebService dans PHP
    Par ggjedi dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/02/2008, 10h36
  5. configurer serveur apache pour executer script php
    Par david06600 dans le forum Apache
    Réponses: 1
    Dernier message: 04/07/2007, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo