Obtenez reçu XML de PHP Serveur SOAP
Je suis en utilisant le SAVON-Serveur dans une application symfony2 et à côté de la manipulation de la StdClass-Objet, j'aurais besoin de lire le xml complet reçu pour le débogage et l'exploitation forestière. Est-il possible de simplement attraper le transférés xml? Il devrait être quelque part dans l'entête de la requête, mais je ne peux pas le trouver là.
double possible de Comment puis-je voir le code XML généré par PHP Client SOAP en Classe?
Et pour le serveur SOAP: php.net/manual/en/soapserver.handle.php
Je ne vois pas comment la fonction de gestion m'aide à recevoir les premières xml?
le cite:
Ok, donc vous me conseillez de lire le xml directement à partir du raw http post? Ce qui est étrange, c'est que le serveur soap est un travail, mais je ne peux pas obtenir tout POST ou GET de données; les Deux semble être vide. Avez-vous une idée de l'endroit où la demande xml peuvent être stockées? J'ai essayé toutes les variables, mais je ne suis pas capable de capturer toutes les données pertinentes.
Et pour le serveur SOAP: php.net/manual/en/soapserver.handle.php
Je ne vois pas comment la fonction de gestion m'aide à recevoir les premières xml?
le cite:
soap_request
- La requête SOAP. Si cet argument est omis, la demande est supposée être dans le raw POST données de la requête HTTP.Ok, donc vous me conseillez de lire le xml directement à partir du raw http post? Ce qui est étrange, c'est que le serveur soap est un travail, mais je ne peux pas obtenir tout POST ou GET de données; les Deux semble être vide. Avez-vous une idée de l'endroit où la demande xml peuvent être stockées? J'ai essayé toutes les variables, mais je ne suis pas capable de capturer toutes les données pertinentes.
OriginalL'auteur Sgoettschkes | 2011-08-01
Vous devez vous connecter pour publier un commentaire.
Je cherchais la même chose et enfin trouvé. Espérons que cette aide vous ou quelqu'un d'autre.
La
$postdata
variable aura le XML brut. Trouvé par le biais de liens suivants:http://php.net/manual/en/reserved.variables.httprawpostdata.php
http://php.net/manual/en/soapserver.soapserver.php
Merci!!!! C'est ce que j'ai besoin!
Superbe réponse, très utile pour moi. Merci.
OriginalL'auteur Steve Lindsey
Le XML brut, transmis dans une enveloppe SOAP doit être dans le corps POST. Dans une application Symfony, vous pouvez obtenir le corps de la requête POST par la création d'un Demande objet et en appelant ses getContents() méthode.
Au sein d'un Contrôleur
Vous pouvez obtenir de demande de contenu facilement dans le contrôleur, comme suit:
Au sein d'un Service
De bonnes pratiques (pour Symfony 2.4+), consiste à injecter un RequestStack dans votre classe de service dans le conteneur de services. Vous pouvez faire cela comme un argument du constructeur de votre classe de service, par l'invocation d'une méthode de définition, etc. Voici un petit exemple d'utilisation de l'injection par le constructeur.
Dans votre conteneur de service:
Puis dans votre classe de service:
Documentation de référence:
http://symfony.com/blog/new-in-symfony-2-4-the-request-stack
OriginalL'auteur Haig Bedrosian