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 :

[Web Service] Gestion des Fault en PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 142
    Points : 77
    Points
    77
    Par défaut [Web Service] Gestion des Fault en PHP
    Bonjour,

    je suis actuellement sur un projet concernant le développement de Web Service en PHP... (Je n'ai qu'une expérience assez limité en Web Service)

    J'utilise la librairie native de PHP5.

    Mon soucis de faire en sorte de pouvoir gérer les exceptions (fault). J'arrive pas à les faire marcher malgré ce que j'ai pu lire... Si quelqu'un pouvais jeter un oeil...

    (je précise que le Web Service fonctionne si je ne lance pas d'exceptions)

    voici mes fichiers :


    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <?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/'>
     
    	<types>
    		<xsd:schema
    			targetNamespace='http://example.org/StockQuote'
    			xmlns:tns=' http://example.org/StockQuote '>
     
    			<xsd:complexType name='DPPException'>
    				<xsd:sequence>
    					<xsd:element name="msg" type="xsd:string" minOccurs="0" />
    				</xsd:sequence>
    			</xsd:complexType>
     
                <xsd:element name="badRadio">
    		         <xsd:complexType> 	
    		            <xsd:complexContent>
    		            	<xsd:extension base="tns:DPPsException" /> 
    		            </xsd:complexContent>
    		         </xsd:complexType>
    			</xsd:element>   
            </xsd:schema>
    	</types>
     
     
     
    <wsdl:message name='getQuoteRequest'>
      <wsdl:part name='text' type='xsd:string'/>
      <wsdl:part name='text2' type='xsd:string'/>
    </wsdl:message>
    <wsdl:message name='getQuoteResponse'>
      <wsdl:part name='result' type='xsd:string'/>
    </wsdl:message>
    <wsdl:message name="badRadioMsg">
      <wsdl:part name="parameters" element="tns:badRadio" />
    </wsdl:message>
     
    <portType name='StockQuotePortType'>
      <wsdl:operation name='getQuote'>
        <wsdl:input message='tns:getQuoteRequest'/>
        <wsdl:output message='tns:getQuoteResponse'/>
        <wsdl:fault name="badRadio" message="tns:badRadioMsg" />
      </wsdl:operation>
    </portType>
     
    <binding name='StockQuoteBinding' type='tns:StockQuotePortType'>
      <soap:binding style='rpc'    transport='http://schemas.xmlsoap.org/soap/http'/>
      <wsdl:operation name='getQuote'>
        <soap:operation soapAction='urn:xmethods-delayed-quotes#getQuote'/>
        <wsdl:input>
          <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
            encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
        </wsdl:input>
        <wsdl:output>
          <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
            encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
        </wsdl:output>
        <wsdl:fault name="badRadio">
    	  <soap:fault use="encoded" name="badRadio" namespace='urn:xmethods-delayed-quotes'  encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    	</wsdl:fault>
      </wsdl:operation>
    </binding>
     
    <service name='StockQuoteService'>
      <port name='StockQuotePort' binding='StockQuoteBinding'>
        <soap:address location='http://localhost/zend/server1.php'/>
      </port>
    </service>
    </definitions>
    client PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $client = new SoapClient("http://localhost/zend/stockquote.wsdl");
    try {
      print($client->getQuote("Radio 1","novabis"));
    } catch (SoapFault $fault) {
      echo $fault;
    }
    ?>

    server en 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
    class QuoteService { 
     
     
      function getQuote($text,$text2) {
        if($text=="Radio 1")
          throw new SoapFault("Server","Radio 1 est pas bien");
        return $text . ', c\'est bien ';
      }
    }
    ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
    $server = new SoapServer("stockquote.wsdl");
    $server->setClass("QuoteService");
    $server->handle();
    ?>


    ps : l'implémentation actuelle n'est que expérimentale

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 142
    Points : 77
    Points
    77
    Par défaut
    J'ai pas mis le message reçu lorsque j'exécute mes scripts...

    le voici :

    SoapFault exception: [SOAP-ENV:Server] Radio 1 est pas bien in Z:\**[mon chemin d'accès]**\Workspace\WSPHP\index.php:4 Stack trace: #0 [internal function]: SoapClient->__call('getQuote', Array) #1 Z:\USERS\tj\Workspace\WSPHP\index.php(4): SoapClient->getQuote('Radio 1', 'novabis') #2 {main}
    Je suis toujours sur ce problème de savoir comment gérer les exceptions avec des Web Services pour du PHP...

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 142
    Points : 77
    Points
    77
    Par défaut
    Voila, en fait ce n'était pas une erreur que j'avais... (je ne pensais pas que le print de la fault me donnerai ce résultat)


    Du coup, je reprend une partie de ma question : je voudrais pouvoir "typer mes fault" afin que le client puisse connaître quelle fault a été remontée.

    Je pensais donc créer des classes héritant de SoapFault.. Mon problème est que je n'arrive pas à élaborer mes fichiers php et mon fichier wsdl de façon à ce que le typage soit pris en compte.

    est ce que quelqu'un a déja effectué ce type de travail et pourrait m'indiquer si je suis sur la bonne voie ou pas parce que je ne trouve pas vraiment d'information la dessus

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Je voulais faire comme toi utilise le natif soap de php5

    Mais c'est beaucoup plus simple avec la librairie nusoap. Par contre je bute un peu...

    Nusoap contrairement à soap de php5 va te générer tout seul le fichier wsdl. Ce qui un des gros points faible du natif de php5.

Discussions similaires

  1. [WD20] Web service - gestion des espaces
    Par Invité dans le forum WinDev
    Réponses: 5
    Dernier message: 02/12/2015, 14h48
  2. Réponses: 1
    Dernier message: 26/02/2007, 09h44
  3. Mode de gestions des users en PHP/MySQL
    Par MV1908 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/05/2006, 23h25
  4. [PHP-JS] Gestion des évènements dans PHP
    Par haffouff dans le forum Langage
    Réponses: 5
    Dernier message: 25/04/2006, 18h51
  5. [Session] Gestion des droits en PHP
    Par persi dans le forum Langage
    Réponses: 3
    Dernier message: 22/02/2006, 14h54

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