Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai monté un webservice simple avec deux fonctions et lorsque je génère la wsdl, j'obtient une erreur de parsage sur mon navigateur :
Erreur d'analyse XML : instruction de traitement XML ou texte pas au début d'une entité externe
Emplacement : http://www.webserviceaqoba.com/services?wsdl
Numéro de ligne 1, Colonne 5 : <?xml version="1.0"?>
----^
Mon testeur SOAP (SoapUI) m'envois une erreur du meme type comme quoi la wsdl est incorrect. Auriez vous des idées ?
Appel WSDL.
[lang=php] $wsdl = new Zend_Soap_AutoDiscover(); $wsdl->setClass('auth'); $wsdl->handle();
voici la déclaration de la classe auth
[lang=php] <?php require_once CLASS_PATH."/complexType.php"; require_once CLASS_PATH."/TraitementFiltre/mcc.php"; require_once CLASS_PATH."/TraitementFiltre/pays.php"; require_once CLASS_PATH."/TraitementFiltre/jours.php"; require_once CLASS_PATH."/TraitementFiltre/horaires.php"; class auth { /** * Peu etre utilise pour tester la communication avec le server. * @return string */ public function hello() { return "Hello World !"; } /** * Gerre les operation de validation de transaction * @param getautorisationElement $accInfo * @return object */ public function getautorisation($accInfo) { //code traitement } } ?>
et voici la declaration des types complex
[lang=php] <?php class messageForReceiveAuthorizationCenterMessageInRequest { /** * @var string */ public $accountNumber; /** * @var int */ public $authorisationValidityPeriod; /** * @var string */ public $callMode; /** * @var string */ public $channel; /** * @var float */ public $exchangeRateLocalOriginal; /** * @var string */ public $externalReference; /** * @var string */ public $extraDetails; } class getautorisationElement { /** * @var string */ public $extradetails; /** * @var string */ public $accountnumber; /** * @var string */ public $externalreference; /** * @var string */ public $localcurrency; /** * @var string */ public $messageclass; /** * @var string */ public $messagedate; /** * @var string */ public $messagefunction; /** * @var string */ public $messageid; /** * @var string */ public $productid; /** * @var string */ public $senderid; /** * @var string */ public $sendertype; /** * @var string */ public $subchannel ; /** * @var string */ public $transactionamountlocal; /** * @var string */ public $transactionamountoriginal; /** * @var string */ public $transactionoperationdate; /** * @var string */ public $transactionsign; /** * @var string */ public $transactiontype; } class AuthorizationServicesUser_getautorisation_Out { /** * @var string */ public $accountnumber; /** * @var string */ public $responsetime; /** * @var string */ public $currentbalanceaccount; /** * @var string */ public $transactionamountaccountcontext; /** * @var string */ public $acceptedamountlocal; /** * @var string */ public $transactioncurrencyoriginal; /** * @var string */ public $transactionamountoriginalcontext; /** * @var string */ public $currentbalanceoriginal; /** * @var string */ public $currentbalancelocal; /** * @var string */ public $messageid; /** * @var string */ public $transactionamountaccount; /** * @var string */ public $transactiontacreference; /** * @var string */ public $errorcode; /** * @var string */ public $errorwording; /** * @var string */ public $availablebalancelocal; /** * @var string */ public $extradetailout; /** * @var string */ public $responsedate; /** * @var string */ public $availablebalanceoriginal; /** * @var string */ public $refusalcode; /** * @var string */ public $transactionamountlocalcontext; /** * @var string */ public $acceptedamountoriginal; /** * @var string */ public $responsereference; /** * @var string */ public $transactionaccountcurrency; /** * @var string */ public $availablebalanceaccount; /** * @var string */ public $secondaryreturncode; /** * @var string */ public $authorisationindicator; /** * @var string */ public $localcurrency; /** * @var string */ public $primaryreturncode; }
Hors ligne
Petit détail qui semble avoir son importance; J'ai deux applications qui tourne sur ce projet ZF, la redirection se fait par le index.php du dossier public commun au deux.
Avant cette migration, un seul projet était présent sur ce projet ZF et la WSDL se générait très bien.
Il faut savoir que c'est mon premier projet sur ZF dont il est fort possible que quelques détails m'ai echappés, voici le public/index.php
[lang=php] <?php define('CLASS_PATH',realpath(dirname(__FILE__) . '/../models')); switch($_SERVER['HTTP_HOST']) { case 'www.webserviceaqoba.com': case 'localhost': define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/webservice')); break; default: break; } defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); set_include_path( implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../../library'), get_include_path(), ))); require_once '../library/Zend/Application.php'; $objApplication = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $objApplication->bootstrap()->run();
Dernière modification par poulpy (07-03-2012 13:09:54)
Hors ligne
Re re bonjour,
Le problème se précise, le fichier xml généré par le code ZF aurait une tabulation avant le tag <?xml version="1.0"?> ce qui bloquerais. Une idée d'ou elle peu venir ?
Hors ligne
Bon après 6 heures de recherche....il se trouve que j'avais 4 espace dans mon index.php avant la balise <?php
[lang=php] <?php define('CLASS_PATH',realpath(dirname(__FILE__) . '/../models')); switch($_SERVER['HTTP_HOST']) {
Hors ligne