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

Services Web Java Discussion :

probleme d'affichage d'un resultat webservice avec PHP


Sujet :

Services Web Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut probleme d'affichage d'un resultat webservice avec PHP
    bonjour,
    voila ma premiere participation à ce forum j'éspere trouver une solution pour mon probleme:
    j'essaye de mattre en place un webservice avec PHP,
    voici le code de mon 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
    <?php 
    $idmodule = array(
      "yaiche" => 166,
      "anouar" => 166
    ); 
     
    $connect =  mysql_connect("localhost", "comem", "comem") or die ("pas de connexion");  
    $connectbd = mysql_select_db("comem_horaire");  
     
     
    function bonjour($sym){
     
      global $idmodule;
      global $connect;
      global $connectbd;
     
     
    $sql = "select * from tbl_event where Id_Module = 'C".$idmodule[$sym]."'"; 
    //$sql= "select * from tbl_event";
    $result = mysql_query($sql) or die ("anouar");
    $event = mysql_fetch_row($result);
     
    return print_r(count($event)) ; 
     
    }
     
    ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
    $server = new SoapServer("bonjour.wsdl");
     
    $server->addFunction("bonjour");
    $server->handle();
    le principe est que mon client envoi une valuer au serveur qui compare la valeur recu puis lui affecte une valeur numerique, puis il effectue une requete sur une base de données. cette requete m'affiche un tableau dans une page php basic mais pas avec le web service.
    ca c'est mon 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
     
    $client = new SoapClient(NULL,
            array(
            "location" => "http://comem.local/webservice/client_saop.php",
            "uri"      => "urn:xmethods-delayed-quotes",
            "style"    => SOAP_RPC,
            "use"      => SOAP_ENCODED
               ));
     
     
     
    		print_r($client->__call(
          /* SOAP Method Name */
        "bonjour",
           /* Parameters */
      array(
            new SoapParam(
                  /* Parameter Value */
                   "anouar",
                    /* Parameter Name */
                    "yaiche"
            )),
           /* Options */
          array(
               /* SOAP Method Namespace */
                "uri" => "urn:xmethods-delayed-quotes",
                /* SOAPAction HTTP Header for SOAP Method */
                "soapaction" => "urn:xmethods-delayed-quotes#getQuote"
            )). "\n");
     
    ?>
    et j'ai le fichier wsdl comme suite:
    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 name='StockQuote' targetNamespace='http://example.org/StockQuote' xmlns:tns=' http://example.org/StockQuote ' 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/' xmlns='http://schemas.xmlsoap.org/wsdl/'>
    <message name='bonjourRequest'>
    <part name='symbol' type='xsd:array'/>
    </message>
    <message name='bonjourResponse'>
    <part name='Result' type='xsd:array'/>
    </message>
    <portType name='StockQuotePortType'>
    <operation name='bonjour'>
    <input message='tns:bonjourRequest'/>
    <output message='tns:bonjourResponse'/>
    </operation>
    </portType>
    <binding name='StockQuoteBinding' type='tns:StockQuotePortType'>
    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
    <operation name='bonjour'>
    <soap:operation soapAction='urn:xmethods-delayed-quotes#bonjour'/>
    <input>
    <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </input>
    <output>
    <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </output>
    </operation>
    </binding>
    <service name='StockQuoteService'>
    <port name='StockQuotePort' binding='StockQuoteBinding'>
    <soap:address location='https://dev1.mysite.com/site/admin/soap_server.php'/>
    </port>
    </service>
    </definitions>
    le probleme c'est que il m'affiche pas le resultat
    il m'affiche ou bien 1 ou bien Array de l'aide svp

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bonjour,

    J'ai regardé un peu ton code auquel je ne comprends pas tout parce que je n'utilise pas les webservices de cette manière.
    J'ai fait des simplifications pour vérifier que la communication serveur/client fonctionne (donc j'ai enlevé toute reférence à ta base de données) et ca marche bien. La fonction bonjour me retourne "bonjour anouar" ce qui correspond a un de tes paramètres.

    Plusieurs pistes d'erreurs possibles :
    1/ l'adresse du serveur est en https:// est-ce normal?
    2/ Un probleme de connexion a la base de données qui fait que ton serveur quitte avec le die et ne répond pas correctement

    Plusieurs moyens pour déceler le probleme :
    1/ dans ton serveur, utilise des "file_put_contents()" pour logger dans des fichiers tout ce qui se passe, t'assurer que tu te connectes à la base, que tu rentres bien dans la fonction bonjour etc.
    2/ Utiliser ce bout de code dont j'ai parlé la :

    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
     
    <?php 
    $client = new SoapClient
          (
          null, 
          array
                (
                'uri' => 'http://localhost/service/service.php',
                'location' => 'http://localhost/service/service.php'
                'trace'      => 1,
    	    'exceptions' => 0,
                )
          ); 
    print($client->hello("dietrich")); 
    // Ajoutes des infos sur l'erreur :
    echo "<pre>\n";
    // Retourne la requete envoyée au serveur
    echo "Request :\n".htmlspecialchars($client ->__getLastRequest()) ."\n";
    // Retourne la vraie réponse construite sur le serveur 
    //(souvent le message d'erreur produit dans le script du serveur 
    //que tu ne voies pas)
    echo "Response:\n".htmlspecialchars($client ->__getLastResponse())."\n";
    echo "</pre>"; 
    ?>
    Pour avoir plus d'informations sur l'erreur

    3/ Tester les webservices sur des fonctions BEAUCOUP plus simple : je passe UN paramètre (meme pas un tableau juste une string) et le webservice me retourne juste "bonjour" + le nom passé. Une fois que cette étape est validée, complexifier le probleme en rajoutant un tableau de noms et ENSUITE passer a des connexions à la base de données etc.

    4/ Test le script en local sur une machine avec Wamp ou EasyPHP ca sera beaucoup plus simple que d'avoir le serveur sur une autre machine.

    Bon courage!


    PS : tu aurais du poster dans le forum PHP et pas dans Java, j'aurai vu ton message plus tot! Demandes a le déplacer!

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    merci pour la réponse:
    on faite la connexion est correcte d'ailleure la reponse que je recois et bien celle que j'attend mais regarde un la difference entre le resultat brut et l'enveloppe reopnse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Array
     
    Request :
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:xmethods-delayed-quotes" 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/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:bonjour><GTI xsi:type="xsd:string">3eme</GTI></ns1:bonjour></SOAP-ENV:Body></SOAP-ENV:Envelope>
     
    Response:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.SoapClient.com/xml/SQLDataSoap.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:bonjourResponse><Result xsi:type="ns2:Map"><item><key xsi:type="xsd:int">0</key><value xsi:type="xsd:string">137190</value></item><item><key xsi:type="xsd:string">Id</key><value xsi:type="xsd:string">137190</value></item><item><key xsi:type="xsd:int">1</key><value xsi:type="xsd:string">CC362</value></item><item><key xsi:type="xsd:string">Id_Module</key><value xsi:type="xsd:string">CC362</value></item><item><key xsi:type="xsd:int">2</key><value xsi:type="xsd:string">GTI</value></item><item><key xsi:type="xsd:string">Id_Cours</key><value xsi:type="xsd:string">GTI</value></item><item><key xsi:type="xsd:int">3</key><value xsi:type="xsd:string">T107</value></item><item><key xsi:type="xsd:string">No_Salle</key><value xsi:type="xsd:string">T107</value></item><item><key xsi:type="xsd:int">4</key><value xsi:type="xsd:string">2006-10-23 00:00:00</value></item><item><key xsi:type="xsd:string">Dt_Date</key><value xsi:type="xsd:string">2006-10-23 00:00:00</value></item><item><key xsi:type="xsd:int">5</key><value xsi:type="xsd:string">pm</value></item><item><key xsi:type="xsd:string">Periode</key><value xsi:type="xsd:string">pm</value></item><item><key xsi:type="xsd:int">6</key><value xsi:type="xsd:string">lun</value></item><item><key xsi:type="xsd:string">Jour</key><value xsi:type="xsd:string">lun</value></item><item><key xsi:type="xsd:int">7</key><value xsi:type="xsd:string">43</value></item><item><key xsi:type="xsd:string">Semaine</key><value xsi:type="xsd:string">43</value></item></Result></ns1:bonjourResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
    array c'est le resultat du print $events ce qui est le resultat de ma requette sql mais j'arrive pas à l'afficher en xml.

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    dans ta fonction serveur tu fais un return print_r(count($event)) ;

    Ce que ca fait ca, c'est compter le nombre d'éléments dans $event, l'affiche coté serveur (donc invisible pour toi) puis quitte la fonction. Fais plutot un return count($event);

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Request :
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:xmethods-delayed-quotes" 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/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:bonjour><PPC xsi:type="xsd:string">3eme</PPC></ns1:bonjour></SOAP-ENV:Body></SOAP-ENV:Envelope>
     
    Response:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.SoapClient.com/xml/SQLDataSoap.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:bonjourResponse><Result SOAP-ENC:arrayType="xsd:string[8]" xsi:type="SOAP-ENC:Array"><item xsi:type="xsd:string">137190</item><item xsi:type="xsd:string">CC362</item><item xsi:type="xsd:string">GTI</item><item xsi:type="xsd:string">T107</item><item xsi:type="xsd:string">2006-10-23 00:00:00</item><item xsi:type="xsd:string">pm</item><item xsi:type="xsd:string">lun</item><item xsi:type="xsd:string">43</item></Result></ns1:bonjourResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
    tu vois la reponse que je recois pour ma question elle est juste si j'aurai plus qu'une ligne , je comprend pas pourquoi il me donne que la premiere ligne.
    sinon pour la reponse du serveur je l'ouvre avec un browser j'obtiens ca:
    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
     
    −
    	<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    −
    	<SOAP-ENV:Body>
    −
    	<ns1:bonjourResponse>
    −
    	<Result SOAP-ENC:arrayType="xsd:string[8]" xsi:type="SOAP-ENC:Array">
    <item xsi:type="xsd:string">137190</item>
    <item xsi:type="xsd:string">CC362</item>
    <item xsi:type="xsd:string">GTI</item>
    <item xsi:type="xsd:string">T107</item>
    <item xsi:type="xsd:string">2006-10-23 00:00:00</item>
    <item xsi:type="xsd:string">pm</item>
    <item xsi:type="xsd:string">lun</item>
    <item xsi:type="xsd:string">43</item>
    </Result>
    </ns1:bonjourResponse>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    est ce tu sais comment je change le nom des tag: item
    je veux obtenir un truc comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    xsi:type="SOAP-ENC:Array">
    <Id xsi:type="xsd:string">137190</Id>
    <ref xsi:type="xsd:string">CC362</ref>
    <nom xsi:type="xsd:string">GTI</nom >
    <item xsi:type="xsd:string">T107</item>
    <item xsi:type="xsd:string">2006-10-23 00:00:00</item>
    <item xsi:type="xsd:string">pm</item>
    <item xsi:type="xsd:string">lun</item>
    <item xsi:type="xsd:string">43</item>
    </Result>

Discussions similaires

  1. affichage d'une classe owl avec php
    Par Mmeouerghemmi dans le forum Web sémantique
    Réponses: 0
    Dernier message: 23/05/2014, 01h04
  2. [MySQL] probleme de replication de base donnée mysql avec php
    Par christclamard dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/02/2008, 20h42
  3. Réponses: 9
    Dernier message: 08/02/2008, 16h17
  4. Réponses: 2
    Dernier message: 08/12/2007, 11h16
  5. Probleme d'affichage du résultat de ma fonction php
    Par bouba83 dans le forum Langage
    Réponses: 12
    Dernier message: 28/11/2006, 14h31

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