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 ! ) :
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 :
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 :
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 :
$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
Partager