Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-11-2010 17:36:30

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

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:

<?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:

<?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:

<?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:

$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

Hors ligne

 

#2 14-11-2010 12:29:24

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Soap_Client marche en local mais pas en ligne

pour pouvoir se connecter sur un autre site
il faut que ton hébergeur l'autorise. ce qui n'est pas toujours le cas.

il me semble que ZF utilise CURL s'il est présent, les Sockets ou les wrapper fopen
et la couche HTTP

ces élément sont configurable sur le serveur et ne sont donc pas toujours disponible

un phpinfo() sur ton serveur devrait te renseigner

A+JYT

Hors ligne

 

#3 14-11-2010 12:43:43

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Soap_Client marche en local mais pas en ligne

hello,

CURL, les sockets, ou le "allow_url_fopen" sont bien à On ou Enabled.

Il y aurait une autre option à configurer ?

Merci
Fabrice

Hors ligne

 

#4 14-11-2010 13:49:55

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Soap_Client marche en local mais pas en ligne

ouvre avec ton navigateur
http://www.mon-site-en-ligne.fr/dev/zf/ … vice/?wsdl
et
http://zf.test/wsclient/?wsdl
tu dois obtenir 2 xml identique à l'adresse près <soap:address>

A+JYT

Hors ligne

 

#5 14-11-2010 16:42:36

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Soap_Client marche en local mais pas en ligne

yes, j'ai les mêmes xml. Sauf tous les tags qui ont une url bien sûr.

2 copies d'écrans ?

F.

Hors ligne

 

#6 15-11-2010 10:27:30

jboffel
Nouveau membre
Date d'inscription: 03-11-2010
Messages: 6

Re: Soap_Client marche en local mais pas en ligne

Bon alors déjà le problème d'adaptateur pour les requêtes n'est à mon sens pas lié au Framework mais uniquement au SoapClient. le Soap client du zend Framework utilise presque directement les sous fonctions de l'extension soap de PHP. C'est donc l'extension qui effectue la requête pour récupérer le WSDL et le parser.
On utilise pas du tout Zend_Http ici.

Par contre je suis étonné que tu ais bien les WSDL en allant sur chaque URL et que le code ne marche que de local à local. Si je devais parier, je pencherais pour un problème de proxy. Le navigateur que tu utilises n'aurait pas un proxy pour accéder au net ? Si tu as quelque chose du genre, il faut aussi le configurer au niveau du client Soap. Cela n'expliquerait pas le problème de en ligne à en ligne cependant. Mais pas sur que ton hébergeur te laisse faire des requêtes sortante vers lui même...

Si ce n'est pas le cas, tu peux toujours tester depuis un autre client Soap comme SoapUI pour vérifier si c'est le client qui a un problème, ou le serveur. Cet outil est très pratique et complet.

Hors ligne

 

#7 16-11-2010 12:31:58

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Soap_Client marche en local mais pas en ligne

hello,

Je viens d'installer Soapui (ne marche pas en installer windows, en zip oui). J'ai créé un projet, et j'ai la même erreur dans les TestCase .

J'ai pas passé 4 heures avec ce soft dessus non plus pour savoir d'où cela peut venir.

Je vais essayer de voir çà mais je n'ai guère avancé.

F.

Hors ligne

 

#8 16-11-2010 13:06:51

jboffel
Nouveau membre
Date d'inscription: 03-11-2010
Messages: 6

Re: Soap_Client marche en local mais pas en ligne

lors de la création du projet dans le chemin du wsdl on peut mettre directement l'url, si il arrive à charger l'url et créer le projet, c'est que ton wsdl est bien directement accessible. Si il n'y arrive pas alors que ton navigateur affiche le wsdl, je conseille de vérifier si ton navigateur n'utiliserait pas un proxy pour accéder au net... Si c'est le cas, il faut le paramétrer dans les clients soap, que ce soit celui de soap ui ou php...
Lorsque soap ui échoue à interpréter le wsdl, on peut regarder dans les onglets d'erreur pour avoir le détail. Si il n'arrive même pas à le récupérer, c'est différent.

Hors ligne

 

#9 16-11-2010 14:32:54

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Soap_Client marche en local mais pas en ligne

Tous les navigateurs ne revoient pas la même chose pour le lien direct du wsdl :
IE & Opera : le XML
FF et Safari : juste les commentaires (les return de phpdoc)
Chrome : du code bizarre...

Je vais tester un peu + avec SoapUI, car , par contre, pour l'appel du client soap (qui accede au service), tous les navigateurs renvoies la même erreur.

F.

Hors ligne

 

#10 17-11-2010 10:31:25

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Soap_Client marche en local mais pas en ligne

Alors moi j'ai résolu mon pb en installant php-soap sur ma debian .  Donc regarde de ce coté.


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#11 17-11-2010 16:18:21

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Soap_Client marche en local mais pas en ligne

lebilien a écrit:

Alors moi j'ai résolu mon pb en installant php-soap sur ma debian .  Donc regarde de ce coté.

Je vois pas comment et pourquoi soap-php peut m'aider. Zend ne gère pas çà déjà ? smile

F.

Hors ligne

 

#12 18-11-2010 00:40:33

jboffel
Nouveau membre
Date d'inscription: 03-11-2010
Messages: 6

Re: Soap_Client marche en local mais pas en ligne

Il a voulu dire que l'extension soap était manquante sur son serveur et qu'il a du l'ajouter avec le package php-soap sur sa debian...

Hors ligne

 

#13 18-11-2010 09:22:53

lebilien
Membre
Lieu: avranches
Date d'inscription: 19-06-2007
Messages: 270
Site web

Re: Soap_Client marche en local mais pas en ligne

jboffel a écrit:

Il a voulu dire que l'extension soap était manquante sur son serveur et qu'il a du l'ajouter avec le package php-soap sur sa debian...

Merci pour la traduction


http://www.parkaddict.com Gagner des places dans vos parcs préférés

Hors ligne

 

#14 19-11-2010 12:48:25

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Soap_Client marche en local mais pas en ligne

ha ok. Et non, j'ai bien l'extension soap qui est activée...

Donc, c'est autre chose je pense smile
F.

Hors ligne

 

#15 06-10-2012 11:17:44

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: Soap_Client marche en local mais pas en ligne

Ce topic est vieux, mais je voudrais rajouter une précision :

J'ai vu sur le forum US de Zend Framework que cela pouvait être du à la version 5.3.0 de PHP,
Solution : upgrader PHP
En tout cas cela a été mon cas, donc faire attention à ça aussi....

source:
http://forums.zend.com/viewtopic.php?f=69&t=5136


Gostbuster - Développeur WEB

Hors ligne

 

#16 25-10-2012 12:30:31

Asfaloth
Membre
Lieu: Bruxelles
Date d'inscription: 13-05-2008
Messages: 83
Site web

Re: Soap_Client marche en local mais pas en ligne

je profite du déterrage de topic.  J'ai exactement le même soucis.

Marche en local sur le pc d'un développeur, pas sur le mien ni sur le serveur de production.  Il est sur une ubuntu avec les paquet apache2 et php5.  Le serveur et moi somme sur une debian stable.
Config apache la même.  php.ini les même excepté les différences de path.

Le développeur est en php 5.3.5-1Ubuntu  et le serveur en 5.3.5-0Suhosin.  Pour ma part je suis en 5.3.14

C'est à n'y rien comprendre....


La capacité d'apprendre est un don.
La faculté d'apprendre est un talent.
La volonté d'apprendre est un choix.
-=[ Frank Herbert ]=-

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages