2010-01-07 30 views
5

¿Es posible obtener el XML generado por SOAP Client antes de enviarlo a webservice?Obtenga SOAP XML antes de __soapCall?

Necesito esto porque la respuesta del servicio web si uno de los parámetros es realmente mal recibo errores como

Server was unable to read request. 
---> There is an error in XML document (2, 408). 
---> Input string was not in a correct format. 

Esto normalmente incluye disparar hasta tcpmon o alguna otra utilidad TCP observador, la captura de la llamada de servicio web, copiar y pegar xml al editor de texto y ve a la columna 408 para ver cuál es el problema.

Realmente me gustaría simplificar este proceso obteniendo el XML antes de enviarlo.

Respuesta

11

Es muy, muy difícil (casi imposible) hacer eso. Lo que es mucho más fácil es usar la funcionalidad de depuración incorporada de la clase SoapClient para enviar la solicitud después de que se haya enviado. Usted puede hacer que de este modo:

En primer lugar, al crear su SOAPClient, habilitar el seguimiento, así:

$client = new SoapClient($wsdl, array('trace' => true)); 

Luego hacer lo que el tratamiento sea necesario para estar listo para realizar la llamada SOAP y hacerlo. Una vez que se ha hecho, la siguiente información le dará la solicitud que acaba enviado:

echo("<pre>"); //to format it legibly on your screen 
var_dump($client->__getLastRequestHeaders()); //the headers of your last request 
var_dump($client->__getLastRequest()); //your last request 

Y, si quieres ver la respuesta, así, la siguiente debería funcionar:

var_dump($client->__getLastResponseHeaders()); //response headers 
var_dump($client->__getLastResponse()); //the response 
+0

Conseguir que el después de enviar la solicitud también funciona para mí :) muchas gracias – Vnuk

+1

Realmente se puede ver sin enviar: http://stackoverflow.com/a/1626572/1196148 –

Cuestiones relacionadas