Bekommen, empfangen von XML-Daten aus PHP-SOAP-Server
Bin ich mit dem build-in-SOAP-Server innerhalb einer symfony2 Applikation und neben der Handhabung des StdClass-Objekt, die ich brauchen würde, um Lesen Sie den kompletten xml-erhielt für debugging und Protokollierung. Gibt es eine Möglichkeit, einfach fangen die übertragenen xml? Es sollte irgendwo in den request-header, aber ich kann einfach nicht finden, es gibt.
- möglich, Duplikat der Wie sehe ich die eigentliche generierte XML-Datei mit PHP-SOAP-Client-Klasse?
- Und für die SOAP-server: php.net/manual/en/soapserver.handle.php
- Ich sehe nicht, wie die handle-Funktion hilft mir bei Erhalt der raw-xml?
- zitieren:
soap_request
- Die SOAP-Anfrage. Wenn dieses argument weggelassen wird, wird die Anforderung angenommen, dass in der rohen POST Daten der HTTP-Anfrage. - Ok, so dass Sie vorschlagen, lese ich die xml direkt aus dem raw-http-post? Was merkwürdig ist ist, dass die soap-server funktioniert, aber ich kann nicht bekommen keine POST-oder GET-Daten; Beide leer zu sein scheint. Haben Sie eine Ahnung, wo die xml-Anfrage gespeichert werden können? Ich habe versucht, alle Variablen, aber ich bin nicht in der Lage zu fangen, die alle relevanten Daten.
- Gut, Sie sollten in soap_request oder $_POST. Versuchen Sie Schritt für Schritt durch den Prozess der Ausführung mit XDebug, wenn Sie nicht in es Sie zu finden
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war auf der Suche für die gleiche Sache, und es endlich gefunden. Hoffe das hilft dir oder jemand anderes.
Den
$postdata
variable wird die XML-Rohdaten. Gefunden durch die zwei folgenden links:http://php.net/manual/en/reserved.variables.httprawpostdata.php
http://php.net/manual/en/soapserver.soapserver.php
XML-Rohdaten übertragen werden, die in einem SOAP-envelope werden sollte im POST-body. In einer Symfony-Anwendung, können Sie den Textkörper der POST-Anforderung durch die Schaffung eines Anfrage - Objekts und den Aufruf dessen getContents() Methode.
Innerhalb einer Controller -
Können Sie die get-Anforderung, Inhalte leicht in der Steuerung, etwa so:
Innerhalb eines Service
Best practice (für Symfony 2.4+) ist zu injizieren RequestStack in Ihre service-Klasse innerhalb der service-container. Sie können es als Konstruktor-argument, um Ihre service-Klasse durch den Aufruf einer setter-Methode, etc. Hier ist ein schnelles Beispiel mit injection über den Konstruktor.
In Ihrem service-container:
Dann in Ihre service-Klasse:
Referenz-Dokumentation:
http://symfony.com/blog/new-in-symfony-2-4-the-request-stack