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

XML/XSL et SOAP Discussion :

[SOAP][PHP] WSDL, Fonction non reconnue


Sujet :

XML/XSL et SOAP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    489
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 489
    Points : 388
    Points
    388
    Par défaut [SOAP][PHP] WSDL, Fonction non reconnue
    Bonjour,

    Je cherche a mettre en place un serveur soap simple en PHP5...

    Voici deja mes fichiers :

    client.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
    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
    <?php
     
    // Désactivation du cache WSDL
    ini_set('soap.wsdl_cache_enabled', 0);
     
     
    // Nouveau Client SOAP
    try 
    {
     
    $xml = '<?xml version="1.0" encoding="UTF-8"?><OTA_PkgAvailRQ xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_PkgAvailRQ.xsd" Target="Production" Version="3.000" TimeStamp="2005-04-08T21:10:30" EchoToken="7656">
    	<POS>
    			<Source AgentSine="ABC" AgentDutyCode="01234">
    						<RequestorID Type="4" ID="01234">
    						</RequestorID>
    			</Source>
    	</POS>
    	<PackageRequest ID="K09104" TravelCode="42213" TourCode="MINAMA" ProductCode="K">
    		<DateRange Start="2007-06-20" Duration="P14N"/>
    	</PackageRequest>
    	<CustomerCounts>
    			<CustomerCount Code="10" Quantity="2"/>
    			<!-- Code 10 indicates an adult -->
    			<CustomerCount Code="8" Quantity="1" Age="5"/>
    			<!-- Code 8 indicates a child -->
    	</CustomerCounts>
    </OTA_PkgAvailRQ>';
     
     
        $client = new SoapClient('http://10.0.0.163/Soap/Server/fichier4.wsdl', array('trace' => 1, 'soap_version'  => SOAP_1_1));
     
        var_dump($client->__getFunctions());
        echo "<hr/>";
     
        $O =  $client -> __getAvailability($xml);
        // Affichage du résultat
        echo $O->id_pkg ;
        echo "<hr/>";
     
     
     
    } 
    catch (SoapFault $fault) 
    {
        echo $fault;
    }
    ?>

    server.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
    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
    <?php
     
     
    // Désactivation du cache WSDL
    ini_set('soap.wsdl_cache_enabled', 0);
     
     
    // La classe qui va gérer les requètes SOAP
    class WebService {    
        function getAvailability($id_pkg)
        {
        	return array('id_pkg' => $id_pkg);
        }
    }
     
    // On tente d'instancier la classe soapServer
    // Si cela s'avère impossible, on lève une exception
    try {
        $server = new SoapServer('fichier4.wsdl',  array('trace' => 1, 'soap_version' => SOAP_1_1));
        // On définit la classe qui va gérer les requètes SOAP
        $server -> setclass('WebService');
    } catch (Exception $e) {
        echo $e;
    }
     
     
     
     
    // La méthode POST a été utilisée pour appeller cette page.
    // On suppose donc qu'une requète a été envoyée, on la gère
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $server -> handle();
    } 
    // sinon, on affiche une liste des méthodes que peut gérer ce serveur
    else {
        echo '<strong>This SOAP server can handle following functions : </strong>';    
        echo '<ul>';
        foreach($server -> getFunctions() as $func) {        
            echo '<li>' , $func , '</li>';
        }
        echo '</ul>';
    }
    ?>




    et fichier4.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
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:webservice" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="WebServices" targetNamespace="urn:webservice">
    	<message name="getAvailabilityRequest">
    		<part name="xmlin" type="xsd:string"/>
    	</message>
    	<message name="getAvailabilityResponse">
    		<part name="xmlout" type="xsd:string"/>
    	</message>
    	<portType name="AvailabilityPortType">
    		<operation name="getAvailability">
    			<input message="tns:getAvailabilityRequest"/>
    			<output message="tns:getAvailabilityResponse"/>
    		</operation>
    	</portType>
    	<binding name="AvailabilityBinding" type="tns:AvailabilityPortType">
    		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    		<operation name="getAvailability">
    			<soap:operation soapAction="urn:AvailabilityAction"/>
    			<input>
    				<soap:body use="encoded" namespace="urn:xmethods" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</input>
    			<output>
    				<soap:body use="encoded" namespace="urn:xmethods" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    			</output>
    		</operation>
    	</binding>
    	<service name="Webservice">
    		<port name="AvailabilityPort" binding="tns:AvailabilityBinding">
    			<soap:address location="http://10.0.0.163/Soap/Server/server.php"/>
    		</port>
    	</service>
    </definitions>


    Et j'obtiens ce joli message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array(1) { [0]=>  string(37) "string getAvailability(string $xmlin)" } 
     
    SoapFault exception: 
    [Client] Function ("__getAvailability") is not a valid method for this service in /var/www/Soap/Server/client.php:35 
    Stack trace: #0 [internal function]: SoapClient->__call('__getAvailabili...', Array) #1 /var/www/Soap/Server/client.php(35): SoapClient->__getAvailability('


    Alors je ne comprends pas bien d'ou vient le probleme ?? Le fichier wsdl, surement, mais a quel niveau ??

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 58
    Points
    58
    Par défaut Conseil : librairie Nusoap
    Salut alors pour commencer à développer Soap en php, je te conseil d'utiliser la librairie Nusoap.

    Disponible sur l'adresse suivante http://dietrich.ganx4.com/nusoap/


    Maintenant à toi de jouer.

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

Discussions similaires

  1. PHP et interbase : fonctions non reconnues
    Par reeda dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2008, 15h27
  2. [histc][numel] Fonctions non reconnues
    Par yvesleb dans le forum MATLAB
    Réponses: 8
    Dernier message: 02/04/2007, 19h05
  3. Réponses: 5
    Dernier message: 26/01/2006, 15h13
  4. [LDAP] Fonctions non reconnues
    Par Wormus dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 10/01/2006, 13h46
  5. [Configuration] Installation de PHP + Pbm de fonctions non reconnues
    Par BARBIER dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 23/11/2005, 10h54

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