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

Langage PHP Discussion :

SOAP-ERROR: Encoding: object hasn't 'plat' property


Sujet :

Langage PHP

  1. #1
    tff
    tff est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 22
    Points : 19
    Points
    19
    Par défaut SOAP-ERROR: Encoding: object hasn't 'plat' property
    Bonjour,

    Je butte sur ce problème depuis 3 jours avec Soap, WSDL, les objets et les complexType

    J'ai le message d'erreur suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SoapFault exception: [SOAP-ENV:Server] SOAP-ERROR: Encoding: object hasn't 'plat' property SoapClient->__call('carte', Array) #1 {main}
    J'essaye de passer en paramètre quel_plat avec 2 entiers et j'attends le plat en retour.
    Cela semble venir du passage des paramètres et sans certitude aucune.
    Le WSDL est propre, je l'ai généré avec WSDL Editor d'Eclipse.

    Le code du 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
     
    class quel_plat {
        public $type;
        public $start;
     
        function quel_plat($type, $start) {
            $this->type=$type;
            $this->start=$start;
        }
    }
     
    $quel_plat = new quel_plat(1,99);
     
    try {
    $wsdl = 'http://www.urlchangee.fr/mon.wsdl';
    $client = new SoapClient($wsdl, array('trace' => 1));
    $param = new SoapParam($quel_plat, 'tns:carte');
    $result = $client->__call('carte',array('obj'=>$quel_carte));
    }
    Et voici 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
    42
    43
    44
    45
    46
    47
    48
     
    class plat {
      private $IDcarte;
      private $type;
      private $designation;
      private $commentaire;
      private $prix;
      private $image;
      private $pasdancarte;
      private $langue;
     
      public function __construct(){ 
        $this->IDcarte = "mon IDcarte";
        $this->type = "mon type";
        $this->designation = "ma designation";
        $this->commentaire = "mon commentaire";
        $this->prix = 3;
        $this->image = "";
        $this->pasdancarte = false;
        $this->langue = 1;
      }
     
      public function getValues(){  
           $arrToReturn =  
           array(  
               'IDcarte' => $this->IDcarte,  
               'type' => $this->type,  
               'designation' => $this->designation,
               'commentaire' => $this->commentaire,
               'prix' => $this->prix,
               'image' => $this->image,
               'pasdanscarte' => $this->pasdancarte,
               'langue' => $this->langue
           );  
           return $arrToReturn;  
       }  
    }
     
    function carte($parametre) {
      // il faudra traiter les parametres
      $plat = new plat();
      return $plat->getValues();
    }
     
    ini_set("soap.wsdl_cache_enabled", "0"); // désactivation du cache WSDL
    $server = new SoapServer("./mon.wsdl",array('trace' => true));
    $server->addFunction("carte");
    $server->handle();
    Voici les extraits 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
     
          <xsd:complexType name="plat">
          	<xsd:sequence>
          		<xsd:element name="IDcarte" type="xsd:int"></xsd:element>
          		<xsd:element name="type" type="xsd:int"></xsd:element>
          		<xsd:element name="designation" type="xsd:string"></xsd:element>
          		<xsd:element name="commentaire" type="xsd:string"></xsd:element>
          		<xsd:element name="prix" type="xsd:double"></xsd:element>
          		<xsd:element name="image" type="xsd:base64Binary"></xsd:element>
          		<xsd:element name="pasdancarte" type="xsd:int"></xsd:element>
          		<xsd:element name="langue" type="xsd:int"></xsd:element>
          	</xsd:sequence>
          </xsd:complexType>
     
          <xsd:complexType name="quel_plat">
          	<xsd:sequence>
          		<xsd:element name="type" type="xsd:int"></xsd:element>
          		<xsd:element name="start" type="xsd:int"></xsd:element>
          	</xsd:sequence>
    ...
      <wsdl:message name="carteRequest">
        <wsdl:part element="tns:carte" name="parameters"/>
      </wsdl:message>
      <wsdl:message name="carteResponse">
        <wsdl:part element="tns:carteResponse" name="parameters"/>
      </wsdl:message>

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    Salut,
    d'après ce que je comprends ton wsdl attend en entrée quel_plat ET plat.
    Peut-être faut-il revoir la génération du wsdl.plat ne semble pas être un paramètre de retour.

Discussions similaires

  1. [Web Service][SOAP] complextype : SOAP-ERROR: Encoding: Violation of encoding
    Par maximep dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/04/2009, 12h32
  2. Réponses: 1
    Dernier message: 13/02/2007, 18h43
  3. Réponses: 9
    Dernier message: 08/03/2006, 17h04
  4. Réponses: 2
    Dernier message: 30/08/2005, 17h08
  5. Réponses: 2
    Dernier message: 19/04/2005, 16h31

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