SoapClient::__getLastRequest

(PHP 5, PHP 7, PHP 8)

SoapClient::__getLastRequestReturns last SOAP request

Description

public SoapClient::__getLastRequest(): ?string

Returns the XML sent in the last SOAP request.

Note:

This method works only if the SoapClient object was created with the trace option set to true.

Parameters

This function has no parameters.

Return Values

The last SOAP request, as an XML string.

Examples

Example #1 SoapClient::__getLastRequest() example

<?php
$client
= new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo
"REQUEST:\n" . $client->__getLastRequest() . "\n";
?>

See Also

add a note

User Contributed Notes 5 notes

up
35
Anonymous
14 years ago
Adding htmlentities() can be helpful since it makes the XML visible in your browser without needing to view the source.

<?php

echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n";

?>
up
16
hejdavladislav at gmail dot com
8 years ago
Note that when you create SoapClient with option "trace" set to FALSE or omit it, than "__getLastRequest()" always returns NULL.
up
20
Ersin DOGAN
15 years ago
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.
up
6
mayurvirkar at gmail dot com
11 years ago
Just to make it a bit more readable

echo "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.
up
1
LZhang
10 years ago
Creating an xml file and link to the file is my way.

$outputxml = '/output.xml';

file_put_contents($_SERVER['DOCUMENT_ROOT'] . $outputxml, $client->__getLastRequest());

echo '<a href="' . $outputxml . '">here</a>';
To Top