Saltar al contenido

Inspeccione el XML creado por la llamada PHP SoapClient antes / sin enviar la solicitud

Solución:

Observación inicial: Para utilizar el __getLastRequest() método correctamente, debe establecer la opción ‘seguimiento’ en verdadero en la construcción del cliente:

$client = new SoapClient('wsdldoc.asmx?WSDL', array('trace' => TRUE));

De esta manera, tu solicitud todavía será enviado (y, por lo tanto, aún fallan), pero puede inspeccionar el xml enviado después llamando $client->__getLastRequest().


Respuesta principal:

Para acceder al XML generado antes / sin enviando la solicitud, necesitaría subclasificar el SoapClient para anular el __doRequest() método:

class SoapClientDebug extends SoapClient
{
  public function __doRequest($request, $location, $action, $version, $one_way = 0) {
      // Add code to inspect/dissect/debug/adjust the XML given in $request here

      // Uncomment the following line, if you actually want to do the request
      // return parent::__doRequest($request, $location, $action, $version, $one_way);
  }
}

Luego, usaría esta clase extendida en lugar del SoapClient original mientras depura su problema.

Encontré este hilo mientras trabajaba en el mismo problema, y ​​estaba molesto porque estaba usando clases que ya extendían la clase SoapClient () y no quería jugar demasiado con ella. Sin embargo, si agrega la etiqueta “excepciones” => 0 cuando inicia la clase, no arrojará un error fatal (aunque imprimirá una excepción):

SoapClient($soapURL,array("trace" => 1,"exceptions"=>0));

Hacer eso me permitió ejecutar __getLastRequest () y analizar el XML que estaba enviando.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *