- 1
[Opened] [résolu] SoapFault exception: [Client] DTD are not supported by SOAP
Posted by mlmic on 09/06/2011 12:23
Bonjour à tous!
Je suis en train de mettre en place un webservice avec les services soap de jelix-1.3RC1-dev. étant encore à mes premiers pas dans jelix, j'ai fait un test en suivant la documentation de jelix pour cette version et j'ai l'erreur : SoapFault exception: [[Client]] DTD are not supported by SOAP
, j'ai appliquée la solution proposé dans un ticket dans ce forum sans succès. j'ai fait un test avec testapp de jelix avec succès. en comparant les fichiers de configuration et les fichiers générés dans les deux cas. en comparant les fichiers .wsdl, j'ai découvert la source du bug dans mon cas. dans le fichier .wsdl de testapp j'ai :
<soap:operation soapAction="http://localhost/soap.php?service=testapp%7Esoap&method=getServerDate" style="rpc"/>
et dans mon cas j'ai :
soapAction="http://ws45.ultralog.ica:81/index.php?service=product%7Eserver&method=hello" style="rpc"/>
Dans mon cas l'url de soapAction redirige vers index au lieu de soap.php. le rendu dans mon cas est du html au lieu d'une réponse soap.
Comment résoudre ce problème surtout que c'est jelix qui génère ce fichier? Toutes vos suggestions me seront utiles.
[Opened] SoapFault exception: [Client] DTD are not supported by SOAP
Posted by laurentj on 09/06/2011 14:05
Bonjour,
à priori, tu as un problème de configuration du moteur d'url. voir la doc la config de soap
PS: utilise la syntaxe wiki indiqué en dessous du formulaire pour formater ton code, ton message était illisible.
[Opened] SoapFault exception: [Client] DTD are not supported by SOAP
Posted by mlmic on 09/06/2011 16:13
merci pour votre prompte réponse et aussi pour les remarques sur le formatage de mon message.
Je suis allée dans la méthode _updateWSDL de la JWSDL.class de jelix et après avoir examiné ce bout de code qui génère le fichier .wsdl :
$mustCompile = $gJConfig->compilation[['force']] || !file_exists($this->_cachePath); <code> if($gJConfig->compilation['checkCacheFiletime'] && !$mustCompile){ if( filemtime($this->_ctrlpath) > filemtime($this->_cachePath)){ $mustCompile = true; } } if($mustCompile){ jFile::write($this->_cachePath, $this->_compile()); }</code>
j'ai modifié dans mon code l'action hello()
qui devrait s’exécuter sur mon serveur server.soap.php
après cette modification en faisant le pas à pas, la variable $mustCompile
est passée à true, la condition if($mustCompile)
étant à true, il a regénéré le fichier .wsdl cette fois mon url était bien défini sans autre modifications au niveau de la configuration du moteur url.
<soap:operation soapAction="http://localhost/soap.php?service=product%7Eserver&method=hello" style="rpc"/>
et le résultat était concluant sans erreur. Tout laisse croire que c'est le cache qui n'était pas vidé.
Voudrais bien savoir à quel moment il a généré le fichier .wsdl avec cet url :
<soap:operation soapAction="http://localhost/index.php?service=product%7Eserver&method=hello" style="rpc"/>
puisque c'est cet url qui était à la cause de l'erreur.
[Opened] SoapFault exception: [Client] DTD are not supported by SOAP
Posted by mlmic on 09/12/2011 11:37
Bonjour,
Après chaque modification sur mon serveur web service, je vide le cache en tapant la commande cleartemp. le bug initial était dû au cache non vidé.
- 1