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 :

Utiliser des webservices avec nusoap


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut Utiliser des webservices avec nusoap
    Bonjour,

    - je développe un site de Ecommerce (PHP) fonctionnant en parallele avec un logiciel de gestion (WinDEV).
    - Des procédures pour les stocks et autres sont toutes faites sur le logiciel, j'ai créé des Webservices grace a WinDEV et j'aimerais pouvoir les utiliser grace a un serveur SOAP
    -j'ai configuré mon apache, j'ai téléchargé le script nusoap.php
    -ensuite j'ai placé mon fichier XML dans WWW comme il etait indiqué
    -j'ai ensuite réalisé la page suivante, pour tester simplement avec la procédure sNombreEnLettre qui apres avoir recupéré un nombre l'ecrit en tout lettre voici donc mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?
    $chiffre=20;
    require &#40;'nusoap.php'&#41;;
    $s = new soap_server;
    $s -> register&#40;'sNombreEnLettre'&#41;;
     
    function sNombreEnLettre&#40;$chiffre&#41;&#123;
    	if &#40;empty&#40;$chiffre&#41;&#41;
    		return new_soap_fault&#40;"Client", "Pas d entree", "'chiffre' doit etre rempli"&#41;;
    	&#125;
    $s -> service&#40;$HTTP_RAW_POST_DATA&#41;;
    ?>
    -Mais cela m'a affiché les lignes suivantes :
    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
     
    Notice&#58; Undefined variable&#58; HTTP_RAW_POST_DATA in c&#58;\easyphp\www\testecom\index.php on line 11
     
    Notice&#58; Undefined index&#58; content-type in c&#58;\easyphp\www\testecom\nusoap.php on line 3813
     
    Notice&#58; Undefined index&#58; content-type in c&#58;\easyphp\www\testecom\nusoap.php on line 3814
     
    Warning&#58; Cannot modify header information - headers already sent by &#40;output started at c&#58;\easyphp\www\testecom\index.php&#58;11&#41; in c&#58;\easyphp\www\testecom\nusoap.php on line 3778
     
    Warning&#58; Cannot modify header information - headers already sent by &#40;output started at c&#58;\easyphp\www\testecom\index.php&#58;11&#41; in c&#58;\easyphp\www\testecom\nusoap.php on line 3778
     
    Warning&#58; Cannot modify header information - headers already sent by &#40;output started at c&#58;\easyphp\www\testecom\index.php&#58;11&#41; in c&#58;\easyphp\www\testecom\nusoap.php on line 3778
     
    Warning&#58; Cannot modify header information - headers already sent by &#40;output started at c&#58;\easyphp\www\testecom\index.php&#58;11&#41; in c&#58;\easyphp\www\testecom\nusoap.php on line 3778
     
    Warning&#58; Cannot modify header information - headers already sent by &#40;output started at c&#58;\easyphp\www\testecom\index.php&#58;11&#41; in c&#58;\easyphp\www\testecom\nusoap.php on line 3778
     
    Warning&#58; Cannot modify header information - headers already sent by &#40;output started at c&#58;\easyphp\www\testecom\index.php&#58;11&#41; in c&#58;\easyphp\www\testecom\nusoap.php on line 3778
    SOAP-ENV&#58;Clientmethod '' not defined in service
    Si vous pouviez m'orienter, ou m'aider par ce que

  2. #2
    Membre du Club
    Inscrit en
    octobre 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : octobre 2005
    Messages : 87
    Points : 56
    Points
    56
    Par défaut
    Salut,
    Moi aussi j'ai voulu utiliser nusoap, menfin maintenant soap est intégré a php5 et est plus simple d'utilisation. Pour avoir php5 et un serveur apache2 et mysql5 utilise wamp server a la place de easyphp.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    c'est pas trop ideal pour moi enfin je vais voir
    t'aurais pas des cours ou des bons tutos ca la je rame a mort

  4. #4
    Membre du Club
    Inscrit en
    octobre 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : octobre 2005
    Messages : 87
    Points : 56
    Points
    56
    Par défaut
    Et bien wamp server te fournit les même services que easy php mais en plus a jour.

    Sinon bin moi perso j'ai lu la doc w3c : http://www.w3.org/TR/wsdl#_wsdl

    http://classes.scriptsphp.org/article.Construire-un-service-web-en-php-5


    Sinon voici un exemple :

    coté client:
    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
     
    try&#123;
    $wsdl = "http&#58;//tonadresse/gestionUpDown.wsdl";
     
            // Nouvelle instance de la classe soapClient
            $client = new SoapClient&#40;$wsdl,  array&#40;'trace' => 1, 'soap_version'  => SOAP_1_1&#41;&#41;;
     
           	$parametres = array&#40;'id_client' => $id_client, 					'passClient' => md5&#40;$passClient&#41;,
      			'imgName' => $_GET&#91;'titre'&#93;,
       			'passImg' => $password, 	
        			'description' => htmlentities&#40;$_POST&#91;'description'&#93;&#41;,
        												'tags' => htmlentities&#40;$_POST&#91;'tags'&#93;&#41;,
    														'nom' => htmlentities&#40;$_POST&#91;'name'&#93;&#41;&#41;;
     
            $result = $client->__soapCall&#40;'modifRef', $parametres&#41;;
     
          &#125;
      		catch&#40;SoapFault $fault&#41;
      		&#123;
      			echo $fault;
      		&#125;

    coté 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    // La classe qui va gérer les requètes SOAP
    class GestionUpDown &#123;    
        function modifRef&#40;$id_client, $passClient, $imgName, $passImg, $description, $tags, $nom&#41;
    		&#123;
    // les traitement etc....
    	return array&#40;'code_erreur' => 0, 'msg' => 'Reussi'&#41;;
    &#125;
     
    &#125;//fin de class
     
    // On tente d'instancier la classe soapServer
    // Si cela s'avère impossible, on lève une exception
    try &#123;
        $server = new SoapServer&#40;'../soap/gestionUpDown.wsdl', array&#40;'trace' => 1, 'soap_version' => SOAP_1_1&#41;&#41;;
        // On définit la classe qui va gérer les requètes SOAP
        $server -> setClass&#40;'GestionUpDown'&#41;;
     
       &#125; catch &#40;Exception $e&#41; &#123;
        echo $e;
    &#125;
     
     
    // 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 &#40;$_SERVER&#91;'REQUEST_METHOD'&#93; == 'POST'&#41; &#123;
        $server -> handle&#40;&#41;;
    &#125; 
    // sinon, on affiche une liste des méthodes que peut gérer ce serveur
    else &#123;
        echo '<strong>This SOAP server can handle following functions &#58; </strong>';    
        echo '<ul>';
        foreach&#40;$server -> getFunctions&#40;&#41; as $func&#41; &#123;        
            echo '<li>' , $func , '</li>';
     
        &#125;
        echo '</ul>';
         echo "<a href='../soap/gestionUpDown.wsdl'>Voir le fichier wsdl associé&#58;</a><br />";
        echo "Ce fichier vous permettra de connaître les types d'entrée et de sortie des fonctions.<br />";
     
    &#125;
    et le fichier wsdl associé(en partie)
    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
     
    <?xml version="1.0" encoding="utf-8" ?> 
    <definitions name="GestionUpDown"
    			 targetNamespace="http&#58;//localhost/projetm2/stockR/soap/gestionUpDown.wsdl"
    			 xmlns&#58;tns="http&#58;//localhost/projetm2/stockR/soap/gestionUpDown.wsdl"
    			 xmlns&#58;xsd="http&#58;//www.w3.org/2000/10/XMLSchema"
    			 xmlns&#58;xsd1="http&#58;//localhost/projetm2/stockR/soap/schema"
    			 xmlns&#58;soapenc="http&#58;//schemas.xmlsoap.org/soap/encoding/"
    			 xmlns&#58;soap="http&#58;//schemas.xmlsoap.org/wsdl/soap/"
    			 xmlns&#58;mime="http&#58;//schemas.xmlsoap.org/wsdl/mime/"
    			 xmlns="http&#58;//schemas.xmlsoap.org/wsdl/">
     
     
    <message name="ModifRefRequest" >
    	<part name="id_client" type="xsd&#58;int"/>
    	<part name="passClient" type="xsd&#58;string"/>
    	<part name="imgName" type="xsd&#58;string"/>
    	<part name="passImg" type="xsd&#58;string"/>
    	<part name="description" type="xsd&#58;string"/>
    	<part name="tags" type="xsd&#58;string"/>
    	<part name="nom" type="xsd&#58;string"/>
    </message>			 
     
     
    <message name="ModifRefResponse">
    	<part name="code_erreur" type="xsd&#58;int" />
    	<part name="msg" type="xsd&#58;string" />
    </message>
     
     
    <portType name="GestionUpDownPortType">
    	<operation name="modifRef">
    		<input message="tns&#58;ModifRefRequest"/>
    		<output message="tns&#58;ModifRefResponse"/>
    	</operation>
     
    <binding name="GestionUpDownBinding" type="tns&#58;GestionUpDownPortType">
    	<soap&#58;binding style="rpc" transport="http&#58;//schemas.xmlsoap.org/soap/http"/>
    	<operation name="modifRef">
    		<soap&#58;operation soapAction="http&#58;//localhost/projetm2/stockR/soap/gestionUpDown.wsdl"/>
    		<input>
    			<soap&#58;body use="encoded" namespace="http&#58;//localhost/projetm2/stockR/soap/gestionUpDown.wsdl" encodingStyle="http&#58;//schemas.xmlsoap.org/soap/encoding/"/>
    		</input>
    		<output>
    			<soap&#58;body use="encoded" namespace="http&#58;//localhost/projetm2/stockR/soap/gestionUpDown.wsdl" encodingStyle="http&#58;//schemas.xmlsoap.org/soap/encoding/"/>
    		</output>
    	</operation>
    <service name="GestionUpDownService">
    	<documentation>
    		Ce service permet d'uploader des images ou d'en télécharger.
    	</documentation>
    	<port name="GestionUpDownPort" binding="tns&#58;GestionUpDownBinding">
    		<soap&#58;address location="http&#58;//localhost/projetm2/stockR/services/gestionUpDown.php"/>
    	</port>
    </service>
    </definitions>
    Bonfaut remplacer les localhost/... par ton adresse.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    je n'ai pas le droit d'utiliser wamp
    donc je dois me debrouiller avec nusoap.php
    galere mais je pas de fichier .wsdl avec ce qui a été généré par windev

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    est ce qu'un fichier xml suffit

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    sinon dans mon fichier XML qui contient toutes les fonctions, j'ai gInsert_Document_Domaine_2 qui insere une commande et la meme avec response me retourne l'ID, mais je ne vois pas comment le recuperer quelque part

    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
    <xsd&#58;element name="gINSERT_DOCUMENT_Domaine_2">
    <xsd&#58;complexType>
    <xsd&#58;sequence>
    <xsd&#58;element name="sTypeDoc" type="xsd&#58;string"/>
    <xsd&#58;element name="sCodeEts" type="xsd&#58;string"/>
    <xsd&#58;element name="sSouche" type="xsd&#58;string"/>
    <xsd&#58;element name="sCodeDepot" type="xsd&#58;string"/>
    <xsd&#58;element name="sCodeTiers" type="xsd&#58;string"/>
    <xsd&#58;element name="sDate" type="xsd&#58;string"/>
    <xsd&#58;element name="sCodeRepresentant" type="xsd&#58;string"/>
    <xsd&#58;element name="sNumeroDocument" type="xsd&#58;string"/>
    </xsd&#58;sequence>
    </xsd&#58;complexType>
    </xsd&#58;element>
     
    <xsd&#58;element name="gINSERT_DOCUMENT_Domaine_2Response">
    <xsd&#58;complexType>
    <xsd&#58;sequence>
    <xsd&#58;element name="Result" type="xsd&#58;string"/>
    </xsd&#58;sequence>
    </xsd&#58;complexType>
    </xsd&#58;element>

Discussions similaires

  1. [JMS] Utilisation des "queue" avec JMS
    Par be_tnt dans le forum Java EE
    Réponses: 1
    Dernier message: 01/11/2006, 17h05
  2. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 10h18
  3. Peut on utiliser des Webservices WinDEV avec PHP ?
    Par budiste dans le forum WebDev
    Réponses: 8
    Dernier message: 30/03/2006, 12h56
  4. utilisation des webservices en vb6
    Par Amri_Daly dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 09/01/2006, 11h50

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