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] Fatal error: Uncaught SoapFault exception: [Client]..


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 7
    Points
    7
    Par défaut [Web Service] Fatal error: Uncaught SoapFault exception: [Client]..
    Bonjour
    j'ai creer un service web et une methode gettPlats qui prend en parametre une chaine de caractère. Mon problème est que je reçois une erreur

    Fatal error: Uncaught SoapFault exception: [Client] Function ("gettPlats") is not a valid method for this service in C:\xampp\htdocs\Servicesweb\codes\Plateforme\utiliserresto1.php:69 Stack trace: #0 [internal function]: SoapClient->__call('gettPlats', Array) #1 C:\xampp\htdocs\Servicesweb\codes\Plateforme\utiliserresto1.php(69): SoapClient->gettPlats(Array) #2 {main} thrown in C:\xampp\htdocs\Servicesweb\codes\Plateforme\utiliserresto1.php on line 69
    voici le code de la methode

    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
     
    function gettPlats($requete)
    {
    // Connexion à notre base de données.
    mysql_connect("localhost","root","") or die ("Could not connect");
    mysql_select_db ("restaurant1") or die ("Could not select database");
     
    // Requête MYSQL pour récupérer la liste de tous les commentaires et les stocker dans une variable result.
    $result = mysql_query($requete);
    $tab=array();
    // Nous parcourons le résultat et nous recopions les commentaires dans un nouveau tableau
    $i = 0;
    while ($row = mysql_fetch_array($result))
    {
     
    $array[$i] = array(
    'id' => $row['id'],
    'libelle' => $row['libelle'],
    );
     
    ++$i;
    }
    //return $array;
    }
    la definition wsld

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $server->wsdl->addComplexType(
    'lplats',
    'complexType',
    'array',
    '',
    'SOAP-ENC:Array',
    array(
    'requete'=> array('name'=>'requete','type'=>'xsd:string','use'=>''),));
    Merci pour votre aide

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    D'après les sujets précédents tu as rajouté cette méthode qui prend un paramètre.

    Il faut que tu l'aies déclarée dans ta WSDL comme étant une opération.

    Peux-tu montrer toute la déclaration de la WSDL ?
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il faut déclarer ta function gettPlats au niveau du serveur soap:
    http://php.net/soapserver.addfunction

  4. #4
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    je l'ai bien declaré dans le serveur je crois que le problème se situe au niveau du 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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <definitions targetNamespace="http://localhost">
    −
    <types>
    −
    <xsd:schema targetNamespace="http://localhost">
    <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
    <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
    −
    <xsd:complexType name="plats">
    −
    <xsd:all>
    <xsd:element name="id" type="xsd:string" use=""/>
    <xsd:element name="libelle" type="xsd:string" use=""/>
    </xsd:all>
    </xsd:complexType>
    −
    <xsd:complexType name="lesplats">
    −
    <xsd:complexContent>
    −
    <xsd:restriction base="SOAP-ENC:Array">
    <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:plats[]"/>
    </xsd:restriction>
    </xsd:complexContent>
    </xsd:complexType>
    −
    <xsd:complexType name="lplats">
    −
    <xsd:complexContent>
    −
    <xsd:restriction base="SOAP-ENC:Array">
    <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="tns:plats[]"/>
    </xsd:restriction>
    </xsd:complexContent>
    </xsd:complexType>
    </xsd:schema>
    </types>
    <message name="getPlatsRequest"/>
    −
    <message name="getPlatsResponse">
    <part name="lesplats" type="tns:lesplats"/>
    </message>
    <message name="gettPlatsRequest"/>
    −
    <message name="gettPlatsResponse">
    <part name="lesplats" type="tns:lplats"/>
    </message>
    −
    <message name="addPlatRequest">
    <part name="id" type="xsd:string"/>
    <part name="libelle" type="xsd:string"/>
    </message>
    −
    <message name="addPlatResponse">
    <part name="return" type="xsd:int"/>
    </message>
    −
    <portType name="MyWebservicePortType">
    −
    <operation name="getPlats">
    <input message="tns:getPlatsRequest"/>
    <output message="tns:getPlatsResponse"/>
    </operation>
    −
    <operation name="gettPlats">
    <input message="tns:gettPlatsRequest"/>
    <output message="tns:gettPlatsResponse"/>
    </operation>
    −
    <operation name="addPlat">
    <input message="tns:addPlatRequest"/>
    <output message="tns:addPlatResponse"/>
    </operation>
    </portType>
    −
    <binding name="MyWebserviceBinding" type="tns:MyWebservicePortType">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    −
    <operation name="getPlats">
    <soap:operation soapAction="http://127.0.0.1/servicesweb/codes/Plateforme/restaurant1.php/getPlats" style="rpc"/>
    −
    <input>
    <soap:body use="encoded" namespace="http://localhost" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    −
    <output>
    <soap:body use="encoded" namespace="http://localhost" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
    </operation>
    −
    <operation name="gettPlats">
    <soap:operation soapAction="http://127.0.0.1/servicesweb/codes/Plateforme/restaurant1.php/gettPlats" style="rpc"/>
    −
    <input>
    <soap:body use="encoded" namespace="http://localhost" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    −
    <output>
    <soap:body use="encoded" namespace="http://localhost" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
    </operation>
    −
    <operation name="addPlat">
    <soap:operation soapAction="http://127.0.0.1/servicesweb/codes/Plateforme/restaurant1.php/addPlat" style="rpc"/>
    −
    <input>
    <soap:body use="encoded" namespace="http://localhost" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </input>
    −
    <output>
    <soap:body use="encoded" namespace="http://localhost" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    </output>
    </operation>
    </binding>
    −
    <service name="MyWebservice">
    −
    <port name="MyWebservicePort" binding="tns:MyWebserviceBinding">
    <soap:address location="http://127.0.0.1/servicesweb/codes/Plateforme/restaurant1.php"/>
    </port>
    </service>
    </definitions>

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Attention, php met les wsdl en cache ce qui peut poser des problèmes en phase de developpement. Voir peut-etre si ça vient de là...

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Effectivement, redémarres ton serveur pour être sûr que PHP a rafraîchi son cache !
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    sa ne fonctionne pas j'ai toujours la meme erreur.
    en fait comment on declare que la fonction prend un paramètre de type string
    dans le wsld? Actuellement dans ma déclaration je ne l'ai pas renseigné

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $server->wsdl->addComplexType(
    'lplats',
    'complexType',
    'array',
    '',
    'SOAP-ENC:Array',
    array(),
    array(
    array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:plats[]')
    ),
    'tns:plats'
    );

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    tu génère ton wsdl dynamiquement avec NuSoap ?

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par pc.bertineau Voir le message
    Effectivement, redémarres ton serveur pour être sûr que PHP a rafraîchi son cache !
    C'est pas suffisant, le plus sur, en developpement, c'est de jouer sur ces variables de configuration :
    http://fr.php.net/manual/en/soap.configuration.php

    Et encore...

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Oui comme tu dis, et encore... La gestion du cache de Soap est assez mystérieuse pour moi... Je le désactive en Dév mais ne me prive pas de redémarrer quand je touche au WSDL.
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

Discussions similaires

  1. soap Fatal error: Uncaught SoapFault exception:
    Par piotrowski-s dans le forum Langage
    Réponses: 1
    Dernier message: 03/10/2012, 08h17
  2. Réponses: 6
    Dernier message: 21/04/2011, 14h56
  3. [MySQL] Fatal error: Uncaught exception 'MySQLExeption'
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/12/2010, 01h34
  4. [Smarty] Fatal error: Uncaught exception 'SmartyException'
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 20/11/2010, 11h24
  5. Réponses: 1
    Dernier message: 16/02/2009, 14h00

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