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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Problème en PHP avec SOAP et EASYPHP 5.3


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 13
    Points
    13
    Par défaut Problème en PHP avec SOAP et EASYPHP 5.3
    Bonjour à tous.

    Voila ce qui se passe :

    Pour un site web ou j'aimerais implémenter derrière un bouton un service web qui me renverrait une valeur.
    j'ai d'abord voulut commencer par des exemples sur le web. malheureusement je me retrouve avec l'erreur suivante :

    Fatal error: Class 'SoapServer' not found in C:\Program Files\EasyPHP-5.3.9\www\client_moteur_test.php on line 7

    La partie cliente php
    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
     
    <?php
     
    // première étape : désactiver le cache lors de la phase de test
    ini_set("soap.wsdl_cache_enabled", "0");
     
    // lier le client au fichier WSDL
    //if (!extension_loaded('soap')){
    $clientSOAP = new SoapClient('http://127.0.0.1:8080/HelloYou.wsdl',true);
     
     
    // executer la methode getHello
    echo $clientSOAP->getHello('Marc','Assin');
     
    ?>
    la partie 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
     
    <?php
     
    // première étape : désactiver le cache lors de la phase de test
    ini_set("soap.wsdl_cache_enabled", "0");
     
    // on indique au serveur à quel fichier de description il est lié
    $serveurSOAP = new SoapServer('HelloYou.wsdl');
     
    // ajouter la fonction getHello au serveur
    $serveurSOAP->addFunction('getHello');
     
    // lancer le serveur
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
     
    {
    	$serveurSOAP->handle();
    }
    else
    {
    	echo 'désolé, je ne comprends pas les requêtes GET, veuillez seulement utiliser POST';
    }
     
    function getHello($prenom, $nom)
    {
    	return 'Hello ' . $prenom . ' ' . $nom;
    }
    ?>
    et enfin la partie 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?xml version="1.0"?>
    <!-- partie 1 : Definitions -->
    <definitions 	name="HelloYou" 
    		targetNamespace="urn:HelloYou" 
    		xmlns:typens="urn:HelloYou" 
    		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/">
     
    	<!-- partie 2 : Types-->
    <types>
        	<xsd:schema 	xmlns="http://www.w3.org/2001/XMLSchema" 
    			targetNamespace="urn:HelloYou">
     	</xsd:schema>
     </types> 
     
     
    	<!-- partie 3 : Message -->
    	<message name="getHelloRequest">
    		<part name="prenom" type="xsd:string"/>
    		<part name="nom" type="xsd:string"/>
    	</message>
    	<message name="getHelloResponse">
    		<part name="return" type="xsd:string"/>
    	</message>
     
    	<!-- partie 4 : Port Type -->
    	<portType name="HelloYouPort">
    		<!-- partie 5 : Operation -->
    		<operation name="getHello">
    			<input message="typens:getHelloRequest"/>
    			<output message="typens:getHelloResponse"/>
    		</operation>
    	</portType>
     
    	<!-- partie 6 : Binding -->
    	<binding name="HelloYouBinding" type="typens:HelloYouPort">
    		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    		<operation name="getHello">
    			<soap:operation soapAction="HelloYouAction"/>
    			<input name="getHelloRequest">
    				<soap:body 	use="encoded" 	
    						namespace="urn:HelloYou" 	
    						encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</input>
    			<output name="getHelloResponse">
    				<soap:body 	use="encoded" 	
    						namespace="urn:HelloYou" 
    						encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</output>
    		</operation>
    	</binding>
     
    	<!-- partie 7 : Service -->
    	<service name="HelloYouService">
    		<documentation>Retourne une phrase simple </documentation>
    		<!-- partie 8 : Port -->
    		<port name="HelloYouPort" binding="typens:HelloYouBinding">
    			<soap:address location="http://soap.minimonde.org/HelloYou.Server.php5"/>
    		</port>
    	</service>
    </definitions>
    voila y'a tout je comprend pas l’élément que j'ai loupé tout en sachant que dans php. ini la dll ( extension=php_soap.dll) est bien libérer

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    l'extension n'est pas installéé

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 13
    Points
    13
    Par défaut problème extensions ?
    Merci de votre réponse, je me doute que l'extension n'est pas installé mais laquelle, comment la retrouver, ou la téléchargez ? merci de vos réponses

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par ib.sissoko Voir le message
    Merci de votre réponse, je me doute que l'extension n'est pas installé mais laquelle, comment la retrouver, ou la téléchargez ? merci de vos réponses
    est ce que le le dll est dans le dossier des extensions ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 13
    Points
    13
    Par défaut suite
    oui la dll est dans le dossier d'extensions .
    Par contre dans le php.ini du sous repertoire apache de easyphp l'extension était toujours commenter donc je retire le ; et CTRL+S.

    Maintenant le message d'erreur est différent :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'c:\Program Files\EasyPHP-5.3.9\www\Webservices.wsdl' : Extra content at the end of the document in C:\Program Files\EasyPHP-5.3.9\www\Client_simple.php:4 Stack trace: #0 C:\Program Files\EasyPHP-5.3.9\www\Client_simple.php(4): SoapClient->SoapClient('c:\Program File...') #1 {main} thrown in C:\Program Files\EasyPHP-5.3.9\www\Client_simple.php on line 4
    apparemment il n'arriverait pas a lire mon fichier wsdl, j'ai essaye avec plusieurs exemples et tutos rien y fait.
    Est ce un pbm de conf au nivaeu d'easyphp ou une mauvais manip de ma part

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ton xml semble être incorrecte, utilise un librairie comme Zend SOAP pour générer le wsdl ça sera plus simple

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 13
    Points
    13
    Par défaut suite
    J'ai oublie de préciser que j'avais de snotions mais que j'etais un grand débutant.

    Zend framework pour generer wsdl ok mais je ne sais pas comment celui ci fonctionne d'une part d'autre part dois je forcément passer par l'instllation d'un framework ou un IDE pour generer wsdl, n'y aurai t il pas un outil plus simple et léger.

    Ensuite le webservice que je dois tuiliser est ecrit en ASP sous visual studio y a t il une fonctionnalité équivalente sur Visual studio ?

    Merci pour vos réponse, ci possible si on pouvait me donner le plus de détail possible, encore merci !

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par ib.sissoko Voir le message
    Zend framework pour generer wsdl ok mais je ne sais pas comment celui ci fonctionne d'une part d'autre part dois je forcément passer par l'instllation d'un framework ou un IDE pour generer wsdl, n'y aurai t il pas un outil plus simple et léger.
    Je parle pas d'utiliser un framework complet mais une librairie
    http://framework.zend.com/manual/fr/zend.soap.html

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 13
    Points
    13
    Par défaut suite
    Au risque de passer pour un nul y'aurait il un exemple sur la façon de s'y prendre zend soap est une librairie mais comment celle ci s'utilise t elle ?

    Le constructeur de Zend_Soap_Wsdl prend 3 paramètres :
    1.$name - nom du service Web décrit.
    2.$uri - URI d'accès au fichier WSDL. (Une référence dans le système de fichier local est possible.)
    3.$strategy - identifiant optionnel pour identifier la détection de stratégie des types complexes.

    ok mais est ce qu'il y a un interface d'utilisation, etc... ?
    merci

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Tout est bien expliquer avec des exemples

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 13
    Points
    13
    Par défaut suite et fin
    J'ai finit par trouver c'etait effectivement mon fichier wsdl qui etait mal fignoler et donc la lecture n'etais ni possible par le client et le serveur.


    http://destroyedlolo.info/Developpement/WebServices/

    voila un tuto simple, clair et concis qui permet de bien s'impregner du sujet pour aussi bien débutant et pseudo professionnelle.

    Merci d'avoir pris le temps de me répondre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.6] Problème installation Joomla avec MySQL et EasyPHP
    Par chastel dans le forum Installation
    Réponses: 0
    Dernier message: 10/09/2013, 23h41
  2. problème fonction php avec connexion postgreSQL
    Par roblescriso dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/06/2008, 18h02
  3. Problème installation php avec Apache
    Par DreammyKetty dans le forum Apache
    Réponses: 3
    Dernier message: 15/05/2008, 21h54
  4. [MySQL] problème fonction php avec LAST_INSERT_ID()
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/12/2006, 09h51
  5. Réponses: 1
    Dernier message: 30/10/2005, 09h19

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