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

  1. #1
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Web
    Inscrit en
    août 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2004
    Messages : 398
    Points : 194
    Points
    194

    Par défaut Soap_Client marche en local mais pas en ligne

    Hello,

    je me lance dans les web services avec Soap_Client et _Server et cela marche tres bien en local :
    Le service (commentaires phpdoc obligatoire ! ) :
    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
    <?php
    ini_set("soap.wsdl_cache_enabled", "0");
    require_once 'Zend/Soap/AutoDiscover.php';
    require_once 'Zend/Soap/Server.php';
    require_once 'Zend/Soap/Client.php';
    class Custom_Service_Webservice_Ws {
     
        /**
         * Return a string
         * @param int $a
         * @param int $b
         * @return int
         */
        public function add($a, $b) {
            $sum =0;
            if (is_numeric($a) and is_numeric($b)) {
                $sum =  $a + $b;
            }
            return (int)$sum;
        }
     
        /** 
         * Return a string 
         * @param string $type 
         * @return string 
         */
        public function getMyText($text) {
            return $text;
        }
    }
    Le controller de test :
    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
    <?php
    require_once APPLICATION_PATH. '/../library/Custom/Service/Webservice/Ws.php';
     
    class WebserviceController extends Zend_Controller_Action {
        public function indexAction() {
             $urlWS = Zend_Registry::get('config')->webservice->url;
     
            if (is_null($this->getRequest()->getParam('wsdl'))) {
                // Traitement de la requête
                $server = new Zend_Soap_Server($urlWS);
                $server->setClass('Custom_Service_Webservice_Ws');
                $server->handle();
            } else {
                // Retour de la WSDL
                $wsdl = new Zend_Soap_AutoDiscover();
                $wsdl->setClass('Custom_Service_Webservice_Ws');
                $wsdl->handle();
            }
            exit();
        }
    }
    ?>
    et le client SOAP :
    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
    <?php
    class WsclientController extends Zend_Controller_Action {
     
        public function indexAction() {
            $urlWS = Zend_Registry::get('config')->webservice->url;
            if ($urlWS != '') {
                // Appel du WebService
                $options = array('soap_version' => SOAP_1_1);
                $client = new Zend_Soap_Client($urlWS, $options);
                echo "=>" . $client->add(1,5) . '<br>';
                echo "=>" . $client->getMyText("test test test");
            } else {
                echo "Erreur d'url !";
            }
            $this->_helper->viewRenderer->setNoRender();
        }
    }
    ?>
    Tout ce petit monde marche tres bien en local(host), de url local à url local, avec le controller de test, comme ceci : http://zf.test/wsclient/?wsdl

    Lorsque je test de local à en ligne en changeant la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $urlWS = Zend_Registry::get('config')->webservice->url;
    j'ai cette erreur :
    Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.mon-site-en-ligne.fr/dev/zf/public/webservice/?wsdl' : Premature end of data in tag definitions line 2 in D:\wamp\offline-shared\includes\zf\svn\trunk\library\Zend\Soap\Client\Common.php on line 51
    et de "en ligne" à "en ligne" j'ai cela :
    Message: SOAP-ERROR: Parsing WSDL: Couldn't load from ''http://www.mon-site-en-ligne.fr/dev/zf/public/webservice/?wsdl'' : failed to load external entity "'http://www.mon-site-en-ligne.fr/dev/zf/public/webservice/?wsdl'"
    Une idée ?

    Merci
    Fabrice

  2. #2
    Membre averti
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2009
    Messages : 272
    Points : 440
    Points
    440

    Par défaut

    Salut,

    peux tu accéder au WSDL avec l'URL indiquée en utilisant un navigateur web ?
    Keep it simple, stupid !

  3. #3
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Web
    Inscrit en
    août 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : août 2004
    Messages : 398
    Points : 194
    Points
    194

    Par défaut

    hello,

    oui, je peux accèder à l'url. Je vois bien le XML.

    F.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Pas de solution pour ce problème ?!

    Bonjour, j'ai le même soucis. Personne n'a trouvé de solution ?

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : mai 2004
    Messages : 4 587
    Points : 7 065
    Points
    7 065

    Par défaut

    Bonjour,

    le piège classique avec les fichiers WSDL (implémentation native de SOAP de PHP ou celle de Zend Framework, qui n'en est qu'une surcouche), est d'oublier qu'ils sont placés en cache côté serveur. S'ils sont modifiés, il faut penser à redémarrer le serveur HTTP ou bien alors désactiver le cache :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('soap.wsdl_cache_enabled', 0);
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/02/2011, 13h30
  2. [AJAX] Script marche en local mais pas en ligne
    Par obito dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/02/2009, 11h20
  3. Un pdf qui marche en local mais pas en ligne
    Par obito dans le forum FPDF
    Réponses: 15
    Dernier message: 13/02/2009, 23h29
  4. Script marche en local mais pas en ligne
    Par flo354 dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2008, 15h51
  5. php mysql flash marche en local mais pas en ligne
    Par serna dans le forum PHP & MySQL
    Réponses: 3
    Dernier message: 17/01/2008, 08h24

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