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

Zend Framework PHP Discussion :

[Zend_Soap] WSDL document literal -> return toujous StdClass vide


Sujet :

Zend Framework PHP

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 1
    Par défaut [Zend_Soap] WSDL document literal -> return toujous StdClass vide
    Bonjour,

    depuis maintenant plusieurs jours, je tente de mettre un place un WebService SOAP entre Java et le Zend Framework, sans succès... Le WSDL, en mode "RPC" (encoded ou literal), marche sans problème, mais lorsque je passe en mode "document", rien à faire, aucune erreur n'est retournée mais le service me renvoie un objet "StdClass" vide. A noter que le WSDL est généré au format "document literal" est semble parfaitement correcte.

    Mon code :

    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
     
    // --- Class wso.php ---
     
    // Méthode basique
    /**
    * Add method
     * @param int $param1
    * @return string
     */
    public function add($param1)
    {
         $out = 'blablabla ' .$param1 . ' blablabla';
         return $out;
    }
     
    // --- Controller WebserviceController.php ---
     
    // Génération automatique du WSDL de type document literal
    $autodiscover = new Zend_Soap_AutoDiscover();
    $autodiscover->setOperationBodyStyle(
                                            array('use' => 'literal',
                                            'namespace' => 'http://www.monApplication.ch')
                                            );
    $autodiscover->setBindingStyle(
                                            array('style' => 'document')
                                            );
    $autodiscover->setClass('wso');
    $autodiscover->handle();
     
    // Serveur SOAP
    $soap = new Zend_Soap_Server('http://www.monApplication.ch/Webservice?wsdl');
    $soap->setClass('wso');
    $soap->handle();
     
    // --- Class WsclientController.php ---
     
    // Client SOAP
    $ws = new Zend_Soap_Client('http://www.monApplication.ch/Webservice?wsdl');
    $resultat = $ws->add(999);
    var_dump($resultat);
     
    // OUT : StdClass vide
    En testant avec Java, j'obtiens la même chose, le retour du WebService est "vide" mais ne génère aucune erreur. Peut-être que quelqu'un s'est déjà penché sur ce cas de figure, car là je peine vraiment... ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Par défaut
    Je rencontre exactement le même problème que toi, c'est une histoire à se tirer les cheveux.
    As tu avancer sur ce problème

  3. #3
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Yo.

    Je ne sais pas si ça t'aidera, mais voici comment je crée mon WebService.

    J'ai en fait une action dans l'index action d'un de mes contrôleurs qui va initialiser le WebService :
    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
    public function indexAction() {
    		// On désactive le layout et la view.
    		$this->_helper->layout->disableLayout();
    		$this->_helper->viewRenderer->setNoRender(true);
     
    		// Si le paramètre d'URL wsdl est présent, on génère le fichier WSDL.
        	if (isset($_GET['wsdl'])) {
        		// Retourne le wsdl WSDL.
        		$wsdl = new Zend_Soap_AutoDiscover();
    			$wsdl->setClass('Default_Lib_GestionWebServices');
    			$wsdl->handle();
    		}
    		else { // Sinon, on met en place le serveur WSDL.
    			// Gère les requêtes SOAP..
        		$config = Zend_Registry::get('config');
     
    			$server = new Zend_Soap_Server($config->domain->url . 'soap/index?wsdl');
    			$server->setClass('Default_Lib_GestionWebServices');
    			$server->handle();
    		}
    	}
    Du coup, quand je vais sur l'URL www.monsite.com/soap/index?wsdl, j'ai bien le XML de mon WebService qui est généré.

    J'espère que ça t'aidera...

    DarkSeiryu

Discussions similaires

  1. Importateur WSDL + Option Literal = Comportement non souhaité !
    Par ShaiLeTroll dans le forum Web & réseau
    Réponses: 0
    Dernier message: 09/06/2009, 18h31
  2. [Web Service] créer un WS document/literal
    Par Foub dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/01/2009, 20h24
  3. Problème avec WS en document/literal
    Par bugmenot dans le forum Services Web
    Réponses: 3
    Dernier message: 07/09/2007, 09h35
  4. Erreur : More than one part (Document/literal)
    Par ahulane dans le forum Services Web
    Réponses: 4
    Dernier message: 06/08/2007, 09h11
  5. [axis]Forcer le mode Document/literal
    Par adil_aeh dans le forum Services Web
    Réponses: 2
    Dernier message: 05/06/2007, 12h39

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