J'ai créé un service Web SOAP basé sur WSDL en utilisant PHP 5.3. J'utilise Zend Framework pour gérer le service, et ZF à son tour est placé au-dessus de la classe SoapServer intégrée de PHP. En testant avec SoapUI, j'ai découvert que passer un paramètre de type invalide (par exemple, en passant une chaîne quand un entier est défini par le WSDL) a entraîné une réponse vide. Creuser dans le code, j'ai découvert que lorsque les appels ZF SoapServer-> poignée(), l'exécution meurt avec cette erreur fatale:Impossible de gérer les erreurs dans la méthode SoapServer-> handle() de PHP
Fatal error: SOAP-ERROR: Encoding: Violation of encoding rules
L'erreur est logique, mais pour la vie de moi, je ne peux pas comprendre comment capture-le afin que je puisse le gérer avec élégance. Ma compréhension est que handle() devrait lancer une exception, mais il est simplement en train de mourir.
Mais ici est là que ça devient vraiment bizarre ....
L'exécution de plusieurs tests avec SoapUI, sans apporter de modifications de code, produit des résultats différents. La plupart du temps, je reçois la réponse vide, mais de temps en temps, je récupère un SoapFault (ce à quoi je m'attendrais!). Ce n'est pas cohérent, cependant, et je ne peux pas comprendre ce qui le déclenche de toute façon. Pour autant que je sache, les fonctionnalités de mise en cache de SoapUI sont désactivées, ainsi que la mise en cache WSDL. Je ne sais pas si c'est quelque chose avec SoapUI ou PHP. Comme je l'ai dit, bizarre.
connexes, je l'ai trouvé ce vieux bug PHP:
qui sonne un terrible comme mon propre problème. Cependant, je ne suis pas complètement convaincu que c'est mon problème, principalement parce que la documentation PHP couvrant tout cela, ainsi que les documents pour ZF, sont terriblement incomplètes. Ainsi, je peux très bien simplement faire quelque chose de terriblement mal et ne pas le savoir. À la lumière de cela, j'aimerais voir une coquille simple qui montre la bonne façon de piéger et de gérer les erreurs. Mais je vais prendre toute l'aide que les gens là-bas peuvent être en mesure d'offrir.
Est-ce que ce bug est rapporté? http://bugs.php.net/bug.php?id=49513 – MrWhite
Je le crois. En fait, il semble que tout cela soit lié: http://bugs.php.net/bug.php?id=36629 http://bugs.php.net/bug.php?id=50547 http://bugs.php.net/bug.php?id=50895 http://bugs.php.net/bug.php?id=50547 http://bugs.php.net/bug.php? id = 49513 –