Adding htmlentities() can be helpful since it makes the XML visible in your browser without needing to view the source.<?phpecho "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n";?>(PHP 5, PHP 7, PHP 8)
SoapClient::__getLastRequest — Devuelve la última petición SOAP
Devuelve el código XML de la última petición SOAP enviada.
Nota:
Este método funciona únicamente si el objeto SoapClient ha sido creado con la opción
traceconfigurada atrue.
Esta función no contiene ningún parámetro.
La última petición SOAP, en forma de string de código XML.
Ejemplo #1 Ejemplo con SoapClient::__getLastRequest()
<?php
$client = new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
?>
Adding htmlentities() can be helpful since it makes the XML visible in your browser without needing to view the source.<?phpecho "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n";?>Note that when you create SoapClient with option "trace" set to FALSE or omit it, than "__getLastRequest()" always returns NULL.I guess many peoples calls getLastRequest and it returns nothing. "Heey where is the my last request". Now we will see our request, when you created a SoapClient instance, you should give a option parameter as below :
<?php
// below $option=array('trace',1);
// correct one is below
$option=array('trace'=>1);
$client=new SoapClient('some.wsdl',$option);
try{
$client->aMethodAtRemote();
}catch(SoapFault $fault){
// <xmp> tag displays xml output in html
echo 'Request : <br/><xmp>',
$client->__getLastRequest(),
'</xmp><br/><br/> Error Message : <br/>',
$fault->getMessage();
}
?>
"trace" parameter enables output of request. Now, you should see SOAP request.Just to make it a bit more readableecho "REQUEST:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "\n";echo "Response:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "\n";PS: If you are using \n then you need to enclose above statements in <pre>. You can also use <br />, but it gets a bit messy.